struts 操作文件上传下载
需积分: 0 52 浏览量
更新于2016-03-23
收藏 948KB ZIP 举报
Struts是Apache软件基金会下的一个开源框架,主要用于构建企业级的Java Web应用程序。在Web开发中,文件上传和下载功能是非常常见的需求,如用户头像上传、文档分享等。Struts框架提供了对文件上传和下载的支持,使得开发者可以方便地处理这些操作。
### 文件上传
在Struts 1.x中,文件上传主要依赖于`commons-fileupload`和`commons-io`两个库。以下是一些关键知识点:
1. **表单设置**:在HTML表单中,必须包含`enctype="multipart/form-data"`属性,以便发送二进制数据。
2. **ActionForm配置**:创建一个继承自Struts的`ActionForm`类,并添加一个`File`类型的属性,用于接收上传的文件。
3. **ActionForm处理**:在Struts的`execute()`方法中,可以通过`FormFile`对象访问上传的文件信息,如文件名、大小等。
4. **文件保存**:将接收到的文件保存到服务器的指定目录,通常需要考虑文件重命名、大小限制以及异常处理。
5. **临时文件**:`commons-fileupload`会把上传文件存储在临时目录,需要在适当时间(比如操作完成后)进行移动或复制,避免内存泄漏。
### 文件下载
文件下载主要涉及HTTP响应的设置和文件流的处理:
1. **Action类配置**:创建一个Struts Action,定义处理文件下载的逻辑。
2. **文件路径**:确定要提供下载的文件的服务器路径。
3. **HTTP响应设置**:设置响应的`Content-Type`为文件类型,`Content-Disposition`为"attachment",并附上文件名,这样浏览器会弹出保存对话框。
4. **文件流处理**:通过`ServletOutputStream`读取文件并写入到响应流中,注意关闭流以释放资源。
5. **安全与性能**:考虑文件权限、下载速度限制、防止路径遍历攻击等问题。
### 示例代码片段
```java
// ActionForm
public class FileUploadForm extends ActionForm {
private File file; // 用于接收上传的文件
// getter & setter
}
// Action
public class FileDownloadAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException {
String filePath = "服务器上的文件路径";
File file = new File(filePath);
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"");
FileInputStream fis = new FileInputStream(file);
ServletOutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
fis.close();
os.close();
return null;
}
}
```
以上代码展示了Struts 1.x中处理文件上传和下载的基本流程。在实际应用中,还需要结合具体的业务需求进行错误处理、安全控制和用户体验优化。此外,Struts 2.x版本在处理文件上传下载方面提供了更简洁的API,可以使用Interceptor进行配置,降低了代码复杂度。
qq_32522941
- 粉丝: 0
- 资源: 2
最新资源
- 毕设和企业适用springboot智慧城市数据分析平台类及在线学习平台源码+论文+视频.zip
- 毕设和企业适用springboot智慧城市数据分析平台类及智能客服系统源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及城市智能管理系统源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及公寓管理系统源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及电商产品推荐平台源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及电子产品维修平台源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及机器人控制平台源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及旅游规划平台源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及健身管理平台源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及平台生态系统源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及气象数据管理系统源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及区块链平台源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及人力资源管理平台源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及视频直播系统源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及食品配送平台源码+论文+视频.zip
- 毕设和企业适用springboot智慧交通平台类及数字营销平台源码+论文+视频.zip