文件上传和下载在很多web开发中用到,现在,我就将我整理的利用strut2实现文件上传和下载的功能与大家共享一下,希望有用。
1、文件上传:
1)action中代码:
package com.xxyd.web.action; import java.io.File; import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 处理文件上传的Action * @author dove */ public class UploadAction extends ActionSupport { /** 代表上传的文件内容的对象 */ private File upload; /** Struts2约定的代表上传的文件的名 */ private String uploadFileName; /** Struts2约定的代表上传文件的内容类型(MIME) */ private String uploadContentType; public String execute() throws Exception{ System.out.println("文件的名:" + uploadFileName); System.out.println("不要用upload.getName()来获取文件名,这个是临时名:" + upload.getName()); System.out.println("文件的内容类型:" + uploadContentType); //////////使用IO流来操作upload属性 //File destPath = new File("d:/"); //服务端存放文件的目录 //如果要存放到web服务器中本项目的某个目录下 //根据服务器的文件保存地址和原文件名创建目录文件全路径 String destPath = ServletActionContext.getServletContext().getRealPath("/uploads"); File dest = new File(destPath, uploadFileName); //服务器的文件 FileUtils.copyFile(upload, dest);//完成了文件的拷贝工作 return "succ"; } public String getSummery() { return summery; } public void setSummery(String summery) { this.summery = summery; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } }
2)struts.xml中的配置
<action name="upload" class="com.xxyd.web.action.UploadAction"> <!-- 可以更改fileUpload拦截器的属性值来限定上传文件的内容类型,上传文件的大小 --> <interceptor-ref name="defaultStack"> <param name="fileUpload.allowedTypes">image/png,image/gif,image/jpeg,image/jpg,image/x-png, image/pjpeg</param> <param name="fileUpload.maximumSize">102400</param> </interceptor-ref> <result name="succ">/succ.jsp</result> <result name="input">/index.jsp</result> </action>
3)html代码:
<html> <head> <title>Struts2文件上传示例</title> </head> <body> <h3>Struts2文件上传示例</h3><hr/> <s:fielderror/> <form action="upload.action" method="post" enctype="multipart/form-data"><!-- 此处必须为multipart/form-data,而且必须使用post方法 --> <table border="1" width="500"> <tr> <td>选择文件</td> <td><input type="file" name="upload" /></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value='提交' /></td> </tr> </table> </form> </body> </html>
此时,便可以实现文件上传了。
2、文件下载:
1)action中代码:
package com.xxyd.web.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import org.apache.struts2.ServletActionContext; /** * 处理文件下载的Action类 * @author dove */ public class DownLoadAction { private String basePath = ServletActionContext.getServletContext().getRealPath("/uploads"); private String fileName; public String execute(){ return "succ"; } public InputStream getInputStream() throws FileNotFoundException{ return new FileInputStream(new File(basePath, fileName)); } public String getFileName() throws UnsupportedEncodingException { return new String(fileName.getBytes(), "ISO-8859-1"); } public void setFileName(String fileName) { this.fileName = fileName; } }
2)struts.xml中的配置:
<!-- 文件下载 --> <action name="download" class="com.xxyd.web.action.DownLoadAction"> <result name="succ" type="stream"> <param name="contentType">application/octet-stream;charset=ISO8859-1</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename=${fileName}</param> <param name="bufferSize">8192</param> </result> </action>
3)html页面代码:
<html> <head> <title>Struts2文件下载功能实例</title> </head> <body> <a href="download.action?fileName=sunset.jpg">下载sunset.jpg</a><br/> </body> </html>
此时,便可以实现文件的下载功能了。
相关推荐
在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
总的来说,Struts2的文件上传和下载功能通过集成Apache Commons FileUpload库,大大简化了开发者的工作,提供了友好的API和配置选项,使得处理文件上传和下载变得轻而易举。开发者只需要关注业务逻辑,无需过多关注...
在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。以下是对这一主题的详细阐述。 1. **文件上传** - **MultipartResolver**: 在处理文件上传时,Struts2首先需要一个MultipartResolver...
在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户通过表单提交的文件,例如图片、文档等。这个“Struts2 文件上传和下载示例程序”是一个演示如何在Struts2中实现这两个功能的实例。 文件上传是Web...
### Struts2文件上传与下载教程 #### 一、文件上传原理及实现 ...以上步骤详细介绍了如何利用Struts2框架实现文件的上传和下载功能。这些技巧不仅提高了系统的可用性和安全性,还增强了用户体验。
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括文件上传和下载。在Struts2中处理文件上传和下载是常见的需求,对于构建交互式的Web应用来说至关重要。以下将详细介绍Struts2中如何实现这两个...
在实际项目中,文件上传和下载功能是必不可少的,本实例将详细讲解如何在Struts2框架下实现单个文件及多个文件的上传与下载。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相关的Action配置,以便处理文件...
在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...
在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...
以下将详细介绍Struts2框架下如何进行文件的上传和下载。 首先,理解文件上传的基本原理至关重要。当在HTML表单中包含文件上传字段时,需要将表单的`enctype`属性设置为`multipart/form-data`。这是因为在默认的`...
Struts2是一个流行的Java web框架,它为开发者提供了一种优雅的方式来构建动态、结构化的Web...希望本文能为你提供关于Struts2文件上传和下载的基本指导,进一步学习可参考给定的博文链接或其他相关文档和示例代码。
例如,Struts 1和Struts 2在处理文件上传和下载的方式上有显著区别,Struts 2引入了更多面向Action的API和拦截器机制。 5. **源代码分析** 在提供的压缩包文件`upload`中,可能包含了Action类、Struts配置文件、...
综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。