Struts2文件上传的注意点

  Struts2文件上传的原理

  Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。

  基本使用步骤:

  •   添加fileUpload拦截器
  •   解决Commons FileUpload的依赖包
  •   页面使用file类型标签
  •   Action类中使用set方法接收file, filename, fileContentType

  http://struts.apache.org/2.3.1.2/docs/file-upload.html

  http://struts.apache.org/2.3.1.2/docs/file-upload-interceptor.html

  使用的注意点:

  1.struts2的文件上传支持多个文件,在Action类中使用文件数组或List接收。

  http://www.blogjava.net/max/archive/2007/03/21/105124.html

  2.设置fileUpload参数可以过滤文件类型和大小:allowedTypes, maximumSize(以字节为单位)。

 
< action name ="fileUpload" class ="tutorial.FileUploadAction" > 
        < interceptor-ref name ="fileUpload" > 
            < param name ="allowedTypes" > 
                image/bmp,image/png,image/gif,image/jpeg
             </ param > 
             <param name="maximumSize">500000</param>
         </ interceptor-ref > 
        < interceptor-ref name ="defaultStack" />            
        < result name ="input" > /FileUpload.jsp </ result > 
        < result name ="success" > /ShowUpload.jsp </ result > 
 </ action >
 

   allowedType指定的是FileContentType,是依靠Commons FileUpload中德DiskFileItem的属性获取。这里的ContentType是通过上传的文件后缀判断的,并没有实际检查文件类型,所以要确保类型正确需要更多处理。

   常用的ContentType:

文件类型 常见后缀 contentType
Excel2007 xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Excel2003 xls application/vnd.ms-excel
Word2003 doc application/msword

猜你喜欢

转载自lingceng.iteye.com/blog/1739403