struts2文件上传

1. struts2文件上传

a) jsp页面 form表单需要设置属性:enctype="multipart/form-data"

b) method="post"

c) 文件上传的file标签的name要和action中定义的三个属性名称对应
举例:

页面代码<sfile name="myupload"></sfile>

action中成员变量定义如下
    // 上传多个文件的集合文本

     private List<File> myupload;  

   // /多个上传文件的类型集合  

  private List<String> myuploadContentType;  

  // 多个上传文件的文件名集合  

  private List<String> myuploadFileName;  

d) action类生成三个集合的getset方法

e) struts.xml中注册上传 的action

f) struts.xml中上传action标签中的其他设置

i. 如何使用拦截器控制上传文件

1. 当拦截器设置的文件类型,文件大小不满足跳转的页面:

a) <result name="input" type="redirect">页面或者action</result>

b) input:固定写法

2. 应用fileUpload拦截器:
<interceptor-ref name="fileUpload"></interceptor-ref>

a) fileUpload:默认的拦截器之一,不需要自己定义此拦截器

b) <param name="">参数</param>

i. name 可填写的值:

1. allowedExtensions:指定允许上传的文件后缀名
举例 参数png,bmp,jpg,docx,xls

2. allowedTypes:指定允许上传的文件的类型, 如果存在多种类型,以逗号隔开。注意:这里添的不是文件的扩展名, 而是对应的ContentType
举例:参数:可写image/bmp,image/x-png,image/gif

3. maximumSize:指定允许上传的文件的最大字节数。单位是字节   举例:参数:可写 1000000 相当于是上传的文件不能大于1m

3. 关于maximumSize 引发的问题

上传的文件大小明明超过设置的大小而不进行result 的跳转

解决办法:
package标签中设置
<constant name="struts.multipart.maxSize" value="9000000"></constant>

后续发现及说明:

1. struts.multipart.maxSize:掌控整个项目所上传文件的最大的Size

2. struts.multipart.maxSize默认2M

3. fileUpload拦截器的maximumSize属性
必须小于struts.multipart.maxSize的值

 

 

4. 需要重新设置默认拦截器,否则会报异常
<interceptor-ref name="defaultStack"></interceptor-ref>

5. 关于No result defined for action com.ht.action异常:
配置完毕,选择文件后提交时报错。

初步判断:

无法执行actino中的代码,出现异常需要跳转到其他页面,但是action没有找到一个关于异常跳转的result。所以是404
如果有,将跳转到指定要跳转的地方,不会报404
action缺少的代码补充
<result name="input" type="redirect">页面或者action</result>

如果补充完以上代码将不会再报此异常,会进行跳转。但是文件依旧无法上传。
我是如何解决此异常的?
经过检查发现问题出在上传页面的:type="post",修正为
method="post" ,文件即可正常上传。

文件上传需要仔细检查页面上传代码以及aciont 类中
3个集合名称,以免出错。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值