Java Struts2 文件上传下载功能详解
93 浏览量
更新于2024-08-31
收藏 83KB PDF 举报
"java中struts2实现文件上传下载功能实例解析"
在Java开发中,Struts2框架提供了处理文件上传和下载的功能。本实例将深入探讨如何在Struts2中实现这些功能,包括关键步骤、代码示例以及可能遇到的问题。
1. 文件上传
文件上传通常始于前端HTML表单,其中包含一个`<input type="file">`元素,允许用户选择本地文件。在提供的代码片段中,我们看到一个简单的JSP页面,定义了一个这样的输入字段:
```html
<tr>
<td align="right" bgcolor="#F5F8F9">附件:</td>
<td bgcolor="#FFFFFF">
<input type="file" name="upload"/>
</td>
<td bgcolor="#FFFFFF"></td>
</tr>
```
在后台,Struts2 Action需要接收这些文件。这里,我们创建一个基类`BaseAction`,扩展自`ActionSupport`,并添加一些属性来存储上传的文件信息:
```java
public class BaseAction extends ActionSupport {
protected List<File> upload;
protected List<String> uploadContentType; // 文件类型
protected List<String> uploadFileName; // 文件名
protected String savePath; // 保存路径
}
```
接着,我们需要一个Action方法来处理文件上传。以下是一个示例上传方法:
```java
public void uploadAccess(List<File> upload) {
try {
if (null != upload) {
for (int i = 0; i < upload.size(); i++) {
String path = getSavePath() + "" + getUploadFileName().get(i);
System.out.println(path);
// ... 其他处理逻辑,如写入文件流
}
}
} catch (Exception e) {
// 处理异常
}
}
```
在这个方法中,你可以遍历上传的文件列表,将每个文件保存到服务器指定的路径。
2. 文件下载
文件下载涉及生成一个HTTP响应,将服务器上的文件内容发送到客户端。首先,你需要一个Action方法来获取要下载的文件:
```java
public String download() {
String filePath = "服务器上的文件路径";
File file = new File(filePath);
// ... 检查文件是否存在,设置响应头等
return "download";
}
```
在Struts2配置中,为这个方法定义一个“download”结果,设置Content-Disposition响应头以指示浏览器应下载文件而不是显示它:
```xml
<action name="download" class="YourDownloadAction">
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="inputName">fileInputStream</param>
<param name="contentDisposition">attachment;filename="your-filename.ext"</param>
</result>
</action>
```
在Action中,你需要创建一个`ServletInputStream`,从文件读取内容,并将其设置为结果参数:
```java
public ServletInputStream getFileInputStream() throws IOException {
FileInputStream fis = new FileInputStream(file);
return fis;
}
```
这样,当用户访问相应的URL时,Struts2会触发下载Action,将文件内容发送给客户端。
3. 注意事项
- 文件上传和下载时要确保正确处理异常,例如文件不存在或权限问题。
- 为了防止恶意文件上传,应检查文件类型和大小。
- 为了安全,不要将文件直接保存在Web应用的根目录下,以免被直接访问。
- 下载时,确保正确编码文件名,避免安全问题,如跨站脚本攻击。
通过以上步骤,你可以在Struts2中实现基本的文件上传和下载功能。但实际项目中可能需要更复杂的功能,如多文件上传、进度条显示、错误处理等,这需要进一步的定制和优化。
199 浏览量
2020-09-02 上传
126 浏览量
132 浏览量
2019-04-13 上传
2019-04-17 上传
2011-12-16 上传
weixin_38607195
- 粉丝: 17
- 资源: 924
最新资源
- 关于路由器技术的基础l理论知识
- Intel 80x86 CPU系列介绍
- CPU 和GPU设计工作原理
- 理解VMware的3种网络模型
- Master Dojo
- pragmatic.programming.erlang.jul.2007.pdf
- java面试题集 pdf格式
- 计算机数字电路中的 组合逻辑电路。设计。方法。答案。。。。。。。。。
- RJ232描述,描述计算机串口通信的基础知识,也包含了一些例程
- 全国计算机四级考试笔试模拟试题2
- MAC地址的原理分析以及相关应用介绍
- vista下MySQL的安装
- java线程与并行(主要讲解java的nio包某些内容)
- ErlangProgramming.pdf
- PKI技术及应用开发指南
- Apress.Pro.EJB.3.Java.Persistence.API.