Struts2 文件操作实战:上传与下载
4星 · 超过85%的资源 需积分: 10 26 浏览量
更新于2024-09-12
1
收藏 293KB PDF 举报
"struts2文件上传下载教程及源代码示例"
Struts2是一个流行的Java Web框架,它提供了丰富的功能,包括对文件上传和下载的支持。在Struts2中处理文件上传和下载可以让开发者轻松地实现这些常见的用户交互功能。以下是对Struts2文件上传下载的详细讲解。
文件上传:
在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是Apache Commons的一个组件。在HTML表单中,我们需要添加`enctype="multipart/form-data"`属性来允许文件作为二进制数据进行传输。下面是一个简单的Struts2文件上传的HTML表单示例:
```html
<s:form name="Myform" action="/fileManage/upload" method="post" enctype="multipart/form-data" theme="simple">
<s:fielderror></s:fielderror>
<s:file name="image" label="文件"></s:file>
<s:submit id="submit" value="sbumit"></s:submit>
</s:form>
```
在上述代码中,`<s:file>`标签用于选择要上传的文件,`name`属性定义了在Action类中对应的字段名。
Action类处理文件上传:
创建一个继承自`ActionSupport`的Java类,例如`UploadAction`,并添加以下字段以接收上传的文件:
```java
private List<File> image;
private List<String> imageContentType;
private List<String> imageFileName;
```
同时,你需要覆盖`execute()`方法,处理文件的保存。以下是一个简化的例子:
```java
@Override
public String execute() throws Exception {
String path = ServletActionContext.getServletContext().getRealPath("/images");
System.out.println("保存路径为" + path);
// 检查并创建保存目录
File saveDir = new File(path);
if (!saveDir.exists()) {
saveDir.mkdirs();
}
// 遍历并保存上传的文件
if (image.size() > 0) {
for (int i = 0; i < image.size(); i++) {
File fileToSave = new File(saveDir, imageFileName.get(i));
FileUtils.copyFile(image.get(i), fileToSave);
System.out.println("文件 " + imageFileName.get(i) + " 保存成功");
}
}
return SUCCESS; // 或其他Struts2返回值
}
```
在这个例子中,我们获取到保存文件的路径,创建保存目录(如果不存在),然后遍历上传的文件列表,将每个文件复制到指定位置。
文件下载:
Struts2同样支持文件下载,主要通过在Action中创建一个流,然后设置响应头来实现。以下是一个简单的下载Action示例:
```java
public class DownloadAction extends ActionSupport {
private String fileName;
public String execute() throws Exception {
String realPath = ServletActionContext.getServletContext().getRealPath("/images/" + fileName);
File file = new File(realPath);
// 设置响应头
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
// 将文件内容写入输出流
FileInputStream fis = new FileInputStream(file);
IOUtils.copy(fis, response.getOutputStream());
fis.close();
return NONE;
}
// getter and setter for fileName
}
```
在上述代码中,`Content-Disposition`头用于告诉浏览器以附件形式下载文件,而`Content-Type`头则定义了文件类型。
总结:
Struts2提供了方便的文件上传和下载功能,开发者可以通过配置Action类和HTML表单轻松实现这些功能。在实际项目中,要注意处理可能出现的异常,如文件过大、文件类型限制等问题,以确保系统的稳定性和安全性。此外,还要关注文件存储的安全性,防止恶意文件上传和未授权的文件访问。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2013-04-13 上传
2013-10-30 上传
2009-03-16 上传
2019-04-17 上传
2015-12-07 上传
点击了解资源详情
kangzhongxu
- 粉丝: 0
- 资源: 1
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍