Struts2框架默认采用Commons-fileupload组件完成文件上传功能。
• 使用Struts2框架实现文件上传功能,只需在Action中定义一个java.io.File类型的成员并为之设立setter方法,方法名要和参数名对应。
• 客户端上传的文件,Struts2框架会自动将其保存在临时文件中,封装成java.io.File类对象。
如果还想得到上传的文件名和文件类型,需按照如下命名规则在Action中定成员:
保存文件名的变量:paraName+ "FileName";
保存文件类型的变量:paraName+ "ContentType";
• 在Action的execute方法中,保存文件到指定的目录。
【 示例】
• 如果使用同一个参数名上传了多个文件,则只需将Action中的成员改为泛型列表:
private List<File> paraName;
private List<String> paraNameFileName;
private List<String> paraNameContentType;
【示例】
• 如果要限制上传文件的类型及单个文件的大小,可以配置预定义的fileUpload拦截器,修改其allowedExtensions和maximumSize属性的值即可。
<interceptor-ref name="fileUpload">
<param name="allowedExtensions">doc,zip</param>
<param name="maximumSize">10485760</param>
</interceptor-ref>
org.apache.struts2.struts-messages.properties文件中定义了默认错误消息:
struts.messages.error.file.too.large=File too large: {0} "{1}" "{2}" {3}
struts.messages.error.content.type.not.allowed=Content-Type not allowed: {0} "{1}" "{2}" {3}
struts.messages.error.file.extension.not.allowed=File extension not allowed: {0} "{1}" "{2}" {3}
注意:如果要自定义错误消息,只需在消息资源文件中重新定义这几个key对应的值
【示例】
• struts2的参数配置文件default.properties中有两个和文件上传相关的配置项:
// 设置临时文件的存放路径
struts.multipart.saveDir=
// 设置一次上传最大量
struts.multipart.maxSize=2097152
【示
网友评论