文件的上传下载是 Web 开发中老生常谈的功能,基于 Struts2 框架对于实现这一功能,更是能够给我们带来很多的便利。Struts2 已经有默认的 upload 拦截器。我们只需要写参数,它就会自动帮我们封装好。这篇我们就先来看一下基于 Struts2 的单文件和多文件上传。
一、 单文件上传
1.1 导 jar 包
commons-fileupload-1.3.jar
commons-io-2.0.1.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
ognl-3.0.6.jar
struts2-core-2.3.15.3.jar
xwork-core-2.3.15.3.jar
1.2 web.xml 配置 Struts2 核心过滤器
1 <filter> 2 <filter-name>struts2</filter-name> 3 <filter-class> 4 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 5 </filter-class> 6 </filter> 7 8 <filter-mapping> 9 <filter-name>struts2</filter-name> 10 <url-pattern>/*</url-pattern> 11 </filter-mapping>
1.3 JSP 文件上传页(注意 file 的 name 属性一定要与 Action 里面的 File 类型属性名一致)
1 <!-- 文件上传的必要前提: 2 1.请求方式必须是post 3 2.enctype属性的取值必须是multipart/form-data 4 3.提供一个文件选择域 文件上传 5 --> 6 7 <s:form action="upload.action" enctype="multipart/form-data"> 8 9 <s:file name="myfile" label="请选择文件"></s:file> 10 <s:submit value ="提交"></s:submit> 11 12 </s:form>
1.4 实现文件上传的 UploadAction
1 package com.fhcq.action; 2 3 import java.io.File; 4 import javax.servlet.ServletContext; 5 import org.apache.commons.io.FileUtils; 6 import org.apache.struts2.ServletActionContext; 7 import com.opensymphony.xwork2.ActionSupport; 8 9 public class UploadAction extends ActionSupport { 10 11 //表单上提供的字段 12 private File myfile; 13 //struts2在文件上传时提供的属性 14 private String myfileFileName;//上传的文件名。上传字段名称+FileName 注意大小写 15 private String myfileContentType;//上传文件的MIME类型。上传字段名称+ContentType 注意大小写 16 public String upload (){ 17 18 //1.拿到ServletContext 19 ServletContext servletContext = ServletActionContext.getServletContext(); 20 //2.调用realPath方法,获取根据一个虚拟目录得到的真实目录 21 String realPath = servletContext.getRealPath("/WEB-INF/file"); 22 //3.如果这个真实的目录不存在,需要创建 23 File file = new File(realPath ); 24 if(!file.exists()){ 25 file.mkdirs(); 26 } 27 //4.把文件存过去 28 //拷贝:把文件的临时文件复制到指定的位置。注意:临时文件还在 29 //FileUtils.copyFile(myfile, new File(file,myfileFileName)); 30 31 //剪切:把临时文件剪切指定的位置,并且给他重命名。 注意:临时文件没有了 32 myfile.renameTo(new File(file,myfileFileName)); 33 return SUCCESS; 34 } 35 36 public File getMyfile() { 37 return myfile; 38 } 39 40 public void setMyfile(File myfile) { 41 this.myfile = myfile; 42 } 43 44 public String getMyfileFileName() { 45 return myfileFileName; 46 } 47 48 public void setMyfileFileName(String myfileFileName) { 49 this.myfileFileName = myfileFileName; 50 } 51 52 public String getMyfileContentType() { 53 return myfileContentType; 54 } 55 56 public void setMyfileContentType(String myfileContentType) { 57 this.myfileContentType = myfileContentType; 58 } 59 60 }
1.5 配置 struts.xml(注意:修改文件上传的总的大小。)
1 <struts> 2 <!--constant修改struts2的默认配置值 --> 3 <!--修改struct2称为开发模式,修改配置之后会自动加载 --> 4 <constant name="struts.devMode" value="true" /> 5 <!-- 限制上传文件的大小,第一种方式:通过修改struts2的常量。 6 在default.properties中配的struts.multipart.maxSize=2097152--> 7 <constant name="struts.multipart.maxSize" value="4097152" /> 8 9 <package name="p1" extends="struts-default"> 10 11 <action name ="upload" class = "com.fhcq.action.UploadAction" method="upload"> 12 13 <!-- 第二种方式:通过给fileUpload的拦截器注入参数的形式,控制上传文件的大小 14 无法使用 <param name="fileUpload.maximumSize">31457280</param>--> 15 <interceptor-ref name="defaultStack"> 16 <!-- 限制上传文件的扩展名。如果有多个,使用逗号分隔 17 <param name="fileUpload.allowedExtensions">jpg,png,bmp</param>--> 18 <!-- 限制上传文件的MIME类型。 如果有多个,使用逗号分隔 --> 19 <param name="fileUpload.allowedTypes">image/jpg,image/pjpeg,image/png 20 </param> 21 </interceptor-ref> 22 <result>/index.jsp</result> 23 <result name="input" type="redirect">/upload.jsp</result> 24 </action> 25 26 </package> 27 28 </struts>
1.6 配置 fileupload_message.properties,放置在 src 下用来显示错误的资源文件信息
1 struts.messages.error.content.type.not.allowed=\u4E0A\u4F20\u6587\u4EF6\u7684\u7C7B\u578B\u4E0D\u662F\u88AB\u652F\u6301\u7684: {0} "{1}" "{2}" {3}
二、 多文件上传
在以上单文件上传的基础上,修改内容如下:
2.1 JSP 文件上传页(注意 file 的 name 属性一定要与 Action 里面的 File 类型属性名一致)
1 <!-- 文件上传的必要前提: 2 1.请求方式必须是post 3 2.enctype属性的取值必须是multipart/form-data 4 3.提供一个文件选择域 5 --> 6 7 <s:form action="upload.action" enctype="multipart/form-data"> 8 9 <s:file name="myfile" label="请选择文件"></s:file> 10 <s:file name="myfile" label="请选择文件"></s:file> 11 <s:submit value ="提交"></s:submit> 12 13 </s:form>
2.2 实现文件上传的 UploadAction
1 package com.fhcq.action; 2 3 import java.io.File; 4 5 import javax.servlet.ServletContext; 6 7 import org.apache.struts2.ServletActionContext; 8 9 import com.opensymphony.xwork2.ActionSupport; 10 11 public class UploadAction extends ActionSupport { 12 13 //表单上提供的字段 14 private File[] myfile; 15 //struts2在文件上传时提供的属性 16 private String[] myfileFileName;上传的文件名。上传字段名称+FileName 注意大小写 17 private String[] myfileContentType;//上传文件的MIME类型。上传字段名称+ContentType 注意大小写 18 19 public String upload (){ 20 21 //1.拿到ServletContext 22 ServletContext servletContext = ServletActionContext.getServletContext(); 23 //2.调用realPath方法,获取根据一个虚拟目录得到的真实目录 24 String realPath = servletContext.getRealPath("/WEB-INF/files"); 25 //3.如果这个真实的目录不存在,需要创建 26 File file = new File(realPath ); 27 if(!file.exists()){ 28 file.mkdirs(); 29 } 30 //4.把文件存过去 31 //剪切:把临时文件剪切指定的位置,并且给他重命名。 注意:临时文件没有了 32 for(int i=0;i<myfile.length;i++){ 33 myfile[i].renameTo(new File(file,myfileFileName[i])); 34 } 35 36 return SUCCESS; 37 } 38 39 public File[] getMyfile() { 40 return myfile; 41 } 42 43 public void setMyfile(File[] myfile) { 44 this.myfile = myfile; 45 } 46 47 public String[] getMyfileFileName() { 48 return myfileFileName; 49 } 50 51 public void setMyfileFileName(String[] myfileFileName) { 52 this.myfileFileName = myfileFileName; 53 } 54 55 public String[] getMyfileContentType() { 56 return myfileContentType; 57 } 58 59 public void setMyfileContentType(String[] myfileContentType) { 60 this.myfileContentType = myfileContentType; 61 } 62 63 }
相关推荐
在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...
在基于Struts2的项目中,文件上传是一个常见的需求,例如用户上传个人头像、上传文档等。同时,为了确保系统安全和性能,我们需要对上传的文件进行一些限制,比如限制文件类型和大小。本篇文章将详细介绍如何在...
在Struts中,可以实现单文件和多文件的上传,并且为了提升用户体验,我们还可以添加进度条来显示文件上传的状态。本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理...
SWFUpload 是一款开源的Flash上传组件,...通过上述步骤和注意事项,你可以利用SWFUpload和Struts2构建一个功能强大且安全的多文件上传功能。在实际项目中,根据需求进行适当的定制和优化,以满足用户需求和系统安全。
总的来说,"struts2+jquery+ajax文件异步上传"是一个结合了后端处理和前端交互的文件上传解决方案,提供了良好的用户体验和灵活性。通过MyEclipse这样的集成开发环境,开发者可以方便地构建、调试和部署这样的项目。
Struts2 是一个基于 MVC 设计模式的 Java Web 开发...对于初学者来说,理解这些内容有助于掌握 Struts2 框架和文件上传的基本操作。在实际开发中,可能还需要考虑更多细节,如多文件上传、文件重命名策略、错误处理等。
这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上是基于Struts2框架实现文件上传的基本步骤和关键知识点。通过理解和掌握这些内容,开发者可以构建出稳定、安全且用户体验良好的文件上传功能。
本文将深入探讨如何使用Struts2和ExtJS3实现单文件和多文件的上传功能。 首先,我们要理解文件上传的基本流程。在Web应用中,用户通过浏览器选择本地文件,然后这些文件的数据被封装到HTTP请求中发送到服务器。...
在本"基于Struts的文件上传下载源代码"中,我们可以深入理解Struts如何处理文件上传和下载操作,这对于初学者来说是一个非常实用的学习资源。 首先,文件上传在Web应用中是常见的功能,它允许用户从本地计算机选择...
通过上述知识点,我们可以构建一个基于Struts2框架的文件上传和下载功能。这些功能在Web应用中非常实用,可以用于上传用户资料、产品图片、报表文件等,以及提供各种文件的下载服务。开发者应当注意这些操作的安全性...
java 文件上传(包括struts2文件上传,smartupload,基于apatch 的fileupload的文件上传):该文件包括文件上传的多个实例:有基于strtus2自带的文件上传实例、smartupload文件实例 和基于aptche自带的fileupload 的...
总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...
在Java Web开发中,"基于Struts+Hibernate文件上传"是一个常见的应用场景,它结合了两个强大的框架:Struts和Hibernate,来实现用户界面与数据库之间的交互。Struts是MVC(Model-View-Controller)架构的一个实现,...
通过以上步骤,你已经实现了基于Struts2的文件上传功能。`Java_File_UpDown_Struts2_03`这个文件名可能是示例代码或教程资源,包含了更详细的实现细节。如果你想要进一步学习,可以查看这个文件夹中的内容,包括...
Struts2 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,提供了丰富的特性和强大的控制层功能,使得文件上传操作变得相对简单。在本篇中,我们将深入探讨Struts2实现文件上传的原理、步骤以及需要...
Struts 2 文件上传是基于 Apache Commons FileUpload 组件实现的,这个组件处理 HTTP 请求中的多部分数据,将上传的文件保存到服务器的临时目录。Struts 2 的 fileUpload 拦截器则负责将这些文件绑定到 Action 对象...
基于Struts2和Spring的网络硬盘系统,批量上传文件和在线解压,优秀源代码! 基于Struts2和Spring的网络硬盘系统,批量上传文件和在线解压,优秀源代码! 基于Struts2和Spring的网络硬盘系统,批量上传文件和在线...
以上就是基于Struts2实现头像上传的基本步骤和关键知识点,包括Struts2的配置、Action类的编写、前端表单设计以及文件上传过程中的常见问题。通过这样的流程,开发者可以构建出稳定且功能完善的文件上传系统。
在这个“Struts1实现文件上传源码”实例中,我们将深入探讨如何利用Struts1框架来处理文件上传操作。 在Web应用中,文件上传功能是非常常见的,比如用户上传头像、提交文档等。Struts1提供了ActionForm类和一系列...