Struts2 文件上传下载详解与示例

1星 需积分: 3 4 下载量 142 浏览量 更新于2024-10-09 收藏 112KB DOC 举报
"该资源主要介绍了如何在Struts2框架下实现文件的上传与下载功能,包括使用SmartUpload工具类进行文件大小限制、文件类型控制以及实际操作的步骤。" Struts2是一个流行的Java web开发框架,它提供了一种结构化的方式来处理HTTP请求和响应,使得开发人员可以更方便地构建MVC(模型-视图-控制器)架构的应用程序。在Struts2中,文件上传和下载是常见的功能需求,尤其在处理用户提交的表单数据时。 文件上传: 1. SmartUpload的使用:SmartUpload是Struts2中用于文件上传的一个实用工具类,它简化了文件上传的处理流程。首先,需要创建SmartUpload对象,然后初始化这个对象,通常使用`pageContext`来关联请求上下文。 ```java SmartUpload su = new SmartUpload(); su.initialize(pageContext); ``` 2. 设置文件大小限制:SmartUpload提供了设置每个文件最大大小和总上传数据最大大小的方法,以防止过大文件导致服务器资源耗尽。 ```java su.setMaxFileSize(10000); // 单个文件最大10KB su.setTotalMaxFileSize(20000); // 总上传数据最大20KB ``` 3. 控制文件类型:为了确保安全和合规性,可以限制用户只能上传特定类型的文件。`setAllowedFilesList()` 和 `setDeniedFilesList()` 方法用于定义允许和禁止的文件扩展名。 ```java su.setAllowedFilesList("doc,txt"); // 只允许上传doc和txt文件 su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); // 禁止上传指定扩展名的文件 ``` 4. 执行上传:调用`su.upload()`执行文件上传操作。最后,使用`su.save()`方法将所有上传的文件保存到服务器指定的目录。 ```java int count = su.save("/upload"); ``` 文件下载: 1. SmartUpload的初始化:对于文件下载,同样需要创建SmartUpload对象并初始化,但这次的目的不是接收上传的文件,而是提供下载服务。 ```java SmartUpload su = new SmartUpload(); su.initialize(pageContext); ``` 2. 设置Content-Disposition:为了确保文件被浏览器正确处理为下载,需要设置`setContentDisposition(null)`,这会阻止浏览器尝试直接打开某些类型(如.doc或.pdf)的文件。 ```java su.setContentDisposition(null); ``` 3. 触发文件下载:最后,通过`su.downloadFile()`方法指定要下载的文件路径,用户点击链接后,浏览器将开始下载指定的文件。 ```java su.downloadFile("/upload/test.doc"); ``` 应用实例: 在实际应用中,例如一个`uploadimage.jsp`页面,可能会限制用户只上传图片格式的文件。这可以通过在`setAllowedFilesList()`中指定允许的图片扩展名(如jpg、png、gif等)来实现。同时,需要在HTML表单中包含一个`<input type="file">`元素,让用户选择要上传的文件,并通过Struts2的Action处理上传请求。 以上就是使用Struts2的SmartUpload实现文件上传和下载的基本步骤,通过这些步骤,开发者可以构建出功能完善的文件管理功能。然而,实际应用中还需考虑错误处理、安全性(如防止文件覆盖、XSS攻击等)、性能优化(如多文件上传、异步上传)等多个方面。