上传文件是很多Web程序都具有的功能。Struts2本身没有提供解析上传文件内容的功能,它使用第三方的文件上传组件提供对文件上传的支持。所以我们 要想利用Struts2实现文件上传的功能,首先要将commons-fileupload-1.2.1.jar和commons-io-1.4.jar 复制到项目的WEB-INF/lib目录下。
我们知道,Struts1.x的上传组件需要一个ActionForm来辅助传递文件,而Struts2的上传组件却很简单,只用一个拦截 器:org.apache.struts2.interceptor.FileUploadInterceptor(这个拦截器不用配置,是自动装载 的),它负责调用底层的文件上传组件解析文件内容,并为Action准备与上传文件相关的属性值。这里要强调的是:处理文件上传请求的Action必须提 供特殊样式命名的属性。例如,假设表单中文件选择框的名字为upload,那么Action就应该提供以下三个属性 upload,uploadFileName,uploadContentType来分别表示上传文件的File对象、上传文件名以及上传文件内容类型。 很多人因为忽略了这一点而犯错误。