struts2文件上传

struts2上传文件在用的过程中总有些问题:

1. 总找不到'input'逻辑视图,当在action用拦截器的时候(类型、拦截)且配置逻辑视图‘input’后,仍然没有走'input‘.

    假设一下:如果大小超过maximumSize的值或类型不在allowedTypes值的范围内的时候,应该由触发器返回input逻辑视图到struts.xml中。如果没有让action集成 actionsuppt的话,拦截器不会返回'input‘。那么请求就会进入action中并且所谓的拦截器起不到任何效果,文件将会上传成功!

2.当上传文件的大小超过  <constant name="struts.multipart.maxSize" value="9000000"/>它设置的大小时会爆这个错误

‘警告: Unable to parse request
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (8782125) exceeds the configured maximum (2097152)’。

  这个时候如果action集成actionsupport也会返回'input',进入设定好的页面。即时没有配置拦截器interceptor-ref,由此可见,action默认是执行defaultStack的interceptor-ref拦截器。只要继承actionsupport默认的拦截器就会返回'input'。

3.拦截器的配置:  有时候发现拦截器无效:

      <interceptor-ref name="fileUpload" >
         <param name="allowedTypes">image/jpg,image/pjpeg,image/gif</param>
         <param name="maximumSize">100000</param>
      </interceptor-ref>
      <interceptor-ref name="defaultStack" />

即时这样配置了,仍然起不到拦截的作用,除去没有继承actionsupport导致没有范围'input'的情况外,还有可能就是拦截器配置错误,比如 allowedTypes、maximumSize 写错,或者 没有写defaultStack默认拦截器。

4. 当拦截器返回由于上传失败被拦截而返回的 'input'时,如果struts.xml中没有进行配置逻辑视图'input'会出现

这个是weblogic下出现的情况,在tomcat下出现的是No ‘No result defined for Action and result  'input' ’,而且如果对 此action进行 单实例或者多实例限制,单实例此action将不再能用除非重启容器服务重新实例此action,多实例将不会出现这种情况。默认情况下是多实例

5. <constant name="struts.multipart.maxSize" value="9000000"/>和拦截器参数<param name="maximumSize">100000</param>的区别?

<constant name="struts.multipart.maxSize" value="9000000"/>它负责设置框架文件拦截大小,而<param name="maximumSize">100000</param>只针对当前的action。并且他们报的错不一样。

<constant name="struts.multipart.maxSize" value="9000000"/> 它报:

‘警告: Unable to parse request
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (8782125) exceeds the configured maximum (2097152)’。

<param name="maximumSize">100000</param> 而它报:警告: File too large: upload "DSC05128.JPG" "upload_3bcea337_138232bd3xxx“

它们共同的特点是 在继承actionsupport的情况下都返回input

 

 

 

转载于:https://www.cnblogs.com/kaka-bing/archive/2012/06/25/2562086.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值