Struts2 Java文件上传实战指南
需积分: 3 89 浏览量
更新于2024-09-10
收藏 2KB TXT 举报
"本文将介绍如何在Java中使用Struts2框架进行文件上传操作,主要涉及HTML表单、Struts2配置以及Action类的编写。"
在Java Web开发中,Struts2是一个流行的MVC框架,它提供了处理文件上传的功能。文件上传允许用户通过Web表单提交文件到服务器。下面我们将详细探讨如何实现这个功能。
首先,创建HTML表单是文件上传的第一步。在给定的代码片段中,可以看到一个简单的HTML表单,用于选择要上传的视频文件:
```html
<form action="upload" method="post" enctype="multipart/form-data">
<div class="search_add">
<input type="file" name="some" accept="video/mp4,video/x-flv,video/x-rmvb,video/x-msvideo"/>
<input type="submit" value="" class="btn_add"/>
</div>
</form>
```
这里的`enctype="multipart/form-data"`属性至关重要,因为它指示浏览器以多部分/表单数据的形式发送表单数据,这是上传文件所必需的。`accept`属性限定了用户可以选择的文件类型,本例中仅允许上传MP4、FLV、RMVB和WMV视频文件。
接下来,我们需要在Struts2的配置文件(`struts.xml`)中设置相应的拦截器来处理文件上传。这里定义了一个名为`upload`的Action,并指定了`fileUpload`拦截器:
```xml
<constant name="struts.multipart.maxSize" value="900000000"></constant>
<action name="upload"
class="action.redio.UploadAction">
<!-- 设置文件上传最大大小 -->
<interceptor-ref name="fileUpload">
<param name="maximumSize">890000000</param>
<param name="allowedTypes">video/mp4,video/x-flv,video/x-rmvb,video/x-msvideo</param>
</interceptor-ref>
<!-- 使用默认拦截器栈 -->
<interceptor-ref name="basicStack"></interceptor-ref>
<result name="success" type="redirectAction">
findRedio
</result>
</action>
```
`struts.multipart.maxSize`常量定义了允许上传的最大文件大小(这里是900MB)。`fileUpload`拦截器设置了允许上传的最大文件大小(890MB)以及可接受的文件类型。`basicStack`是Struts2的默认拦截器栈,包含了处理Action的基本功能。
最后,我们需要编写处理文件上传的Action类。在这个例子中,`UploadAction`继承自`BaseAction`:
```java
package action.redio;
import java.io.File;
import org.apache.struts2.ServletActionContext;
import action.BaseAction;
import util.FileUtil;
public class UploadAction extends BaseAction {
// 定义文件字段
private File some;
// 文件字段的字符串名
private String someFileName;
// 文件字段的MIME类型
private String someContentType;
// 省略getter和setter方法
// 处理文件上传的方法
public String execute() {
try {
// 获取文件存储路径
String savePath = ServletActionContext.getServletContext().getRealPath("/") + "uploads/";
// 创建保存目录(如果不存在)
FileUtil.createDirIfNotExists(savePath);
// 生成文件名
String fileName = FileUtil.generateUniqueFileName(someFileName);
// 将上传的文件保存到服务器
FileUtil.saveFile(some, savePath, fileName);
// 返回成功结果
return ActionSupport.SUCCESS;
} catch (Exception e) {
// 处理异常
addFieldError("some", "上传失败,请检查文件格式和大小");
return ActionSupport.ERROR;
}
}
}
```
在`UploadAction`中,我们声明了`File`类型的`some`字段来接收上传的文件,以及对应的文件名和内容类型。在`execute()`方法中,我们获取文件存储路径,创建目录(如果不存在),生成唯一的文件名,并保存文件到服务器。如果过程中出现任何错误,我们会返回错误信息。
当文件上传成功后,Struts2会根据配置的`result`标签进行重定向,这里重定向到`findRedio` Action。
总结来说,Java中使用Struts2进行文件上传主要包括以下几个步骤:
1. 创建HTML表单,指定`enctype="multipart/form-data"`。
2. 在Struts2配置文件中配置文件上传拦截器和Action。
3. 编写Action类处理文件上传逻辑,包括文件的保存和错误处理。
通过以上步骤,你可以实现一个基本的文件上传功能,允许用户上传特定类型的视频文件,并将它们保存到服务器上。
2023-12-01 上传
104 浏览量
2011-07-07 上传
2010-01-30 上传
2008-04-23 上传
2019-05-04 上传
fengzhirr123
- 粉丝: 0
- 资源: 12
最新资源
- 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插件介绍