`
eggbucket1
  • 浏览: 76980 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

Struts2中的文件上传

 
阅读更多

以下是在Struts2中上传文件时用到的UploadAction的配置信息

fileUpload拦截器对应的FileUploadInterceptor类中提供了两个属性
分别是protected Long maximumSize属性和protected String allowedTypes属性
maximumSize属性用来设定上传的单个文件的最大体积,单位是字节,所以512000即500KB
这里maximumSize指的不是客户端上传的所有文件的总和,它指的是单个的文件
allowedTypes属性用来指定上传文件的类型,我们可以在Tomcat6.0.20//conf//web.xml文件中查看MIME Type Mappings
也可随意定义文件类型,再正常上传文件,然后看报错信息,同样可以获得所上传文件的正确的类型映射


两个fileUpload拦截器的冲突问题
在Struts2中上传文件时,除了在<action/>中配置<interceptor-ref name="fileUpload">
还要显式的指定默认的defaultStack拦截器,即<interceptor-ref name="defaultStack"/>
但在defaultStack中已有了一个fileUpload,这是就相当于引用了两个fileUpload拦截器
那么在实际运行的过程中,就有可能会出现一些莫名的冲突问题,这时有两种解决办法
第一种是将defaultStack里的拦截器全部拷到这里,然后在fileUpload拦截器中修改那两个属性
这时就会在<action/>充斥了许多的一大片拦截器,影响美观,不太实用
所以就可以采用第二种.】的方式,代码如下

所以在解决重复引用拦截器后引起冲突问题的时候
更推荐使用第二种方法修改某个拦截器的单一属性


废话少说,直接上代码

首先是web.xml文件

然后是用于选择文件进行上传的upload.jsp页面

然后是用于显示文件上传结果的result.jsp页面

然后是Struts2的配置文件struts.xml

最后是用来处理文件上传的核心操作的UploadAction.java

补充:需要在Web Project的WebRoot目录下新建一个upload目录

补充:这是用来保存上传的文件的,Web Project发布后,该upload目录会一并发布

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics