Struts简单文件下载实现
2星 需积分: 9 100 浏览量
更新于2024-10-02
收藏 29KB DOC 举报
"这篇资料主要介绍了如何在Struts框架下实现文件下载的功能,提供了一种简单的方法,并包含关键代码示例。"
在Struts框架中,文件下载是Web应用程序常见的需求,它允许用户从服务器获取文件。相比于文件上传,文件下载的实现过程较为简单。下面我们将详细探讨如何在Struts中实现这一功能。
首先,你需要创建一个新的Web工程。如果你使用的是MyEclipse,那么可以导入Struts支持;如果使用Eclipse,则需要手动添加Struts相关的jar包到项目类路径中。
接下来,我们将关注关键的代码部分。在Struts中,通常会创建一个Action类来处理文件下载的请求。以下是一个名为`DownloadAction`的Action类的简化示例:
```java
package com.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
public class DownloadAction extends DispatchAction {
public ActionForward down(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
// 设置字符编码格式
response.setCharacterEncoding("utf-8");
try {
request.setCharacterEncoding("utf-8");
// 获取文件路径,这里假设文件位于服务器的特定目录
String filePath = "/path/to/your/file";
File file = new File(filePath);
// 检查文件是否存在
if (!file.exists()) {
throw new FileNotFoundException("文件不存在");
}
// 设置响应头信息,包括Content-Disposition和Content-Type
String fileName = "example.txt"; // 假设文件名为example.txt
response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1"));
response.setContentType("application/octet-stream");
// 读取文件并写入到输出流
InputStream in = new FileInputStream(file);
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) != -1) {
out.write(buffer, 0, length);
}
in.close();
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
```
在上述代码中,`down`方法是处理文件下载请求的核心。它首先设置响应的字符编码为UTF-8,然后尝试设置请求的编码。接着,它获取文件路径,检查文件是否存在。如果文件存在,就设置HTTP响应头,告知浏览器这是一个附件(通过`Content-disposition`),并指定文件名。`Content-Type`字段表示文件类型,对于未知类型,通常设置为`application/octet-stream`。最后,使用FileInputStream读取文件内容,通过Servlet的OutputStream将内容写入客户端。
当用户访问与`DownloadAction`关联的URL时,Struts会调用`down`方法,执行文件下载操作。注意,实际项目中需要处理可能出现的各种异常,例如文件不存在、IO错误等,并提供适当的错误反馈。
为了使文件下载功能更加灵活,你可以根据实际需求扩展此基础示例,比如支持多种文件类型、动态获取文件名、记录下载日志、限制下载速度等。
Struts文件下载的基本流程是:创建Action类处理请求,设置响应头,读取文件内容并写入输出流。通过理解这一过程,开发者可以轻松地在Struts应用中实现文件下载功能。
2019-03-01 上传
2018-12-10 上传
点击了解资源详情
2008-09-12 上传
2019-01-11 上传
2010-06-29 上传
2011-01-25 上传
阳光草丛下的兔子
- 粉丝: 9
- 资源: 10
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常