struts 操作文件上传下载

preview
共38个文件
class:9个
java:9个
jsp:5个
需积分: 0 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
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源