Struts2 文件上传是Java Web开发中的常见操作,主要用于处理用户通过表单上传的文件。在Struts2框架中,文件上传涉及到多个步骤和配置,包括表单设计、Action类的定义、拦截器的配置以及错误处理。以下是对Struts2文件上传的详细总结: 1. **表单设计**: - 在HTML表单中,需添加`<input type="file" />`字段,例如`<input type="file" name="myUpload" />`。`name`属性对应Action类中的属性。 2. **Action类**: - 需要继承`ActionSupport`类,并定义三个属性:`File`类型的`myUpload`用于存储上传的文件内容(临时文件),`String`类型的`myUploadFileName`用于存储文件名,`String`类型的`myUploadContentType`用于存储文件的MIME类型。 3. **流程**: - Struts2的`fileupload`拦截器会检查表单的`enctype`属性,如果为`multipart/form-data`,则会处理文件上传信息,将文件数据封装到Action的属性中。 4. **常量配置**: - `struts.multipart.parser`:设置文件上传解析器,可以是jakarta、pell或cos,默认为jakarta。 - `struts.multipart.saveDir`:指定临时保存上传文件的目录。 - `struts.multipart.maxSize`:设置整个请求的最大大小,默认为2MB。 5. **拦截器参数**: - `maximumSize`:单个文件的最大大小限制。 - `allowedTypes`:允许的MIME类型列表,如`image/jpeg,image/png`。 - `allowedExtensions`:允许的文件扩展名列表,如`.jpg,.png`。 6. **错误处理**: - 错误信息key对应不同的错误场景,如文件上传失败、文件大小超出限制、MIME类型不被允许、扩展名不被允许等。 7. **多文件上传**: - 如果要上传多个文件,HTML表单中所有`<input type="file">`的`name`属性需相同,Action类中对应的属性改为`List`类型。 8. **下载**: - 使用`<result type="stream">`配置,提供`contentType`(如`image/jpeg`)以指定内容类型,`contentDisposition`(如`attachment;filename=xxx.jpg`)用于设置附件头,`inputName`指定Action中`InputStream`类型的属性。 9. **OGNL(Object-Graph Navigation Language)**: - OGNL是Struts2中用于表达式语言的工具,允许在Action与视图之间灵活地访问和修改对象属性。在文件上传下载中,OGNL用于在Action与JSP页面间传递和处理数据。 以上是Struts2文件上传的基本流程和关键知识点,实际开发中还需考虑错误处理、异常捕获以及安全性等方面的问题,例如防止文件覆盖、非法文件上传等。了解这些细节有助于确保文件上传功能的正确性和安全性。
剩余6页未读,继续阅读
- 粉丝: 1252
- 资源: 2047
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助