Struts2实现多文件上传及后台处理示例
需积分: 10 154 浏览量
更新于2024-09-13
收藏 2KB TXT 举报
本资源主要介绍了如何在Struts2框架下实现多文件上传功能,包括前端JSP页面的表单设计和后端Action类的处理代码。
在Struts2中进行多文件上传,首先需要在JSP页面创建一个支持多文件上传的表单。表单需要设置`method`为"post",`enctype`为"multipart/form-data",这是为了能够传输二进制数据,即文件内容。示例代码中的JSP页面包含两个文件上传字段,分别是`file1`和`file2`,它们都使用了Struts2的`s:filename`标签来创建输入字段。
```jsp
<form action="uploadFiles.action" name="uploadForm" method="post" enctype="multipart/form-data">
file1: <s:filename="uploadFile"/>
file2: <s:filename="uploadFile"/>
<input type="submit" value="submit"/>
</form>
```
在后台Action类中,我们需要处理这些上传的文件。首先,定义一个`savePath`变量,用于存储文件的保存路径,这里使用了ServletContext的`getRealPath`方法获取到Web应用的根目录。然后,在`execute`方法中遍历`uploadFile`列表,对每个文件进行读取和写入操作。`uploadFile`、`uploadFileFileName`和`uploadFileContentType`是Struts2自动绑定的属性,分别对应上传文件的File对象、文件名和文件类型。
```java
private final String savePath = HmContextListener.context.getRealPath("WEB-INF" + File.separator + "downloads");
public String execute() throws Exception {
for (int i = 0; i < uploadFile.size(); i++) {
InputStream is = new FileInputStream(uploadFile.get(i));
java.io.OutputStream os = new FileOutputStream(savePath + File.separator + uploadFileFileName.get(i));
byte[] buffer = new byte[4000];
int count = 0;
while (-1 != (count = is.read(buffer))) {
os.write(buffer, 0, count);
}
is.close();
os.close();
}
return SUCCESS;
}
private List<File> uploadFile;
private List<String> uploadFileFileName;
private List<String> uploadFileContentType;
public List<File> getUploadFile() {
return uploadFile;
}
public void setUploadFile(List<File> uploadFile) {
this.uploadFile = uploadFile;
}
```
在实际开发中,还需要考虑文件大小限制、文件类型检查、异常处理等安全性问题。例如,可以添加过滤器限制上传文件大小,或者在保存文件前检查文件类型是否符合要求,防止恶意文件上传。同时,确保文件名的安全性,避免覆盖已有文件或存在路径遍历漏洞。
此外,Struts2提供了`FileUploadInterceptor`拦截器,可以简化文件上传的处理,通过配置可以在Action中直接处理上传的文件,而无需手动处理`File`对象和流。但上述代码展示了基础的文件上传流程,对于初学者来说更易于理解。
Struts2的多文件上传涉及到前端表单的构建、后端Action的接收与保存,以及可能的安全控制。在实际应用中,应结合拦截器和其他安全措施,以提高代码的可维护性和安全性。
2014-10-10 上传
2012-12-17 上传
2023-06-08 上传
2023-04-13 上传
2023-05-18 上传
2023-10-13 上传
2023-06-08 上传
2023-03-31 上传
2023-05-25 上传
hongyan0000
- 粉丝: 0
- 资源: 38
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦