以下是在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目录会一并发布