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:
文件类型常见后缀contentTypeExcel2007xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetExcel2003xlsapplication/vnd.ms-excelWord2003docapplication/msword?