1、单文件上传
页面表单MIME封装类型为enctype="multipart/form-data" ,提交方式为post,Struts2使用FileUpload实现文件上传
jsp
<form action="${pageContext.request.contextPath}/demo01/upload1.action" method="post" enctype="multipart/form-data"> <input type="file" name="upload"><br/> <input type="submit"> </form>
action,Action中必须定义三个变量,变量名称和jsp表单中的name属性对应,File类型的“xxx”、String类型的“xxxContentType”、String类型的“xxxFileName”
public class UploadAction1 extends ActionSupport { private File upload; private String uploadContentType; private String uploadFileName; @Override public String execute() throws Exception { File destFile = new File(ServletActionContext.getServletContext().getRealPath("/upload") + "/" + uploadFileName); FileUtils.copyFile(upload, destFile); return NONE; } public void setUpload(File upload) { this.upload = upload; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } }
配置
<package name="demo01" namespace="/demo01" extends="struts-default"> <action name="upload1" class="demo01.UploadAction1"></action> </package>
2、文件上传的常量配置
通过fileUpload拦截器设置文件上传类型和大小,设置只对当前action有效
<package name="demo01" namespace="/demo01" extends="struts-default"> <action name="upload1" class="demo01.UploadAction1"> <result name="input">/demo01/upload1.jsp</result> <interceptor-ref name="defaultStack"> <param name="fileUpload.allowedExtensions">.mp3,.txt</param> <param name="fileUpload.maximumSize">6000000</param> </interceptor-ref> </action> </package>
在src目录下配置国际化资源文件messages.properties
struts.messages.error.content.type.not.allowed = \u6587\u4EF6\u7C7B\u578B\u9519\u8BEF struts.messages.error.uploading = \u4E0A\u4F20\u51FA\u73B0\u9519\u8BEF #struts.messages.error.file.too.large = \u6587\u4EF6\u592A\u5927 struts.messages.error.file.too.large =\u4E0A\u4F20\u6587\u4EF6{1}\u8D85\u8FC7\u5141\u8BB8\u5927\u5C0F{3} struts.messages.error.file.extension.not.allowed=\u4E0A\u4F20\u6587\u4EF6\u540D\u6269\u5C55\u540D\u4E0D\u7B26\u5408\u8981\u6C42
struts.xml中注册使用
<constant name="struts.custom.i18n.resources" value="messages"></constant>
这种全局资源文件配置没有任何问题,但我在action的所在包中配置国际化文件却失败了
页面需要fielderror显示
<s:fielderror></s:fielderror> <form action="${pageContext.request.contextPath}/demo01/upload1.action" method="post" enctype="multipart/form-data"> <input type="file" name="upload"><br/> <input type="submit"> </form>
也可以在struts.xml中配置全局常量,但这错误信息需要actionerror显示
<constant name="struts.multipart.maxSize" value="200000000"></constant>
3、多文件上传
jsp,上传文件的name属性一样
<form action="${pageContext.request.contextPath}/demo01/upload2.action" method="post" enctype="multipart/form-data"> <input type="file" name="upload"><br/> <input type="file" name="upload"><br/> <input type="file" name="upload"><br/> <input type="submit"> </form>
Action,在Action中使用数组接受
public class UploadAction2 extends ActionSupport { private File[] upload; private String[] uploadContentType; private String[] uploadFileName; @Override public String execute() throws Exception { for (int i = 0; upload != null && i < upload.length; i++) { File sourFile = upload[i]; File destFile = new File(ServletActionContext.getServletContext().getRealPath("/upload") + "/" + uploadFileName[i]); FileUtils.copyFile(sourFile, destFile); } return NONE; } public void setUpload(File[] upload) { this.upload = upload; } public void setUploadContentType(String[] uploadContentType) { this.uploadContentType = uploadContentType; } public void setUploadFileName(String[] uploadFileName) { this.uploadFileName = uploadFileName; } }
struts配置
<action name="upload2" class="demo01.UploadAction2"> <result name="input">/demo01/upload2.jsp</result> </action>
所有的上传在操作之前需要判断是否有文件上传,防止空文件上传
相关推荐
struts2part2,由于文件太大无法一次上传,分成两部分,请用文件合并工具进行合并。文件合并工具见本人资源。
struts2.3.14part1,文件太大无法一次上传,分割成part1和part2,用文件合并工具进行合并即可。
非常好非常详细的struts2标签的学习资料,自己也正在用。由于附件只能上传15MB以下的文件,只能分卷了,请下载part1和part2后,放于同一目录下解压。
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解
Struts2 和 hibernate 演示 jqGrid, 使用Action中的 代码可以容易的把jqGrid 用于servlet或纯jsp. Struts 2.16, jqGrid 3.5b, hibernate 3.2 annotation 由于我的上传权限为20M,而我上传上的包括所有的源代码和支持...
《Struts2权威指南——基于WebWork核心的MVC开发》的源代码。请完全放心,绝对保证质量。由于源码中包含jar文件,打出的包过大,只能分多次上传,请谅解。原文件大于415M,压缩后377M,分压成16个包。此为第68个包。
struts-2.1.6-all.rar 马老师视频使用。官网上找不到了,传上来给有需要的同学。 由于上传文件大小限制,这是struts-2.1.6-all.part2.rar,解压还需下载struts-2.1.6-all.part1.rar