文件上传
基本原理
上传文件是由FileUploadInterceptor实现的,基本原理是这样的,FileUploadInterceptor会从上传的数据中解析出 上传的文件名称,文件类型和文件内容,调用Action相应的方法进行设置。
假定上传表单中File控件的名称是upload,则Action必须实现如下三个设值方法:
setUploadFile……保存上传的文件内容
setUploadFileName……保存上传的文件名称
setUploadContentType……保存上传的文件类型
拦截器支持针对上传表单同一名称的文件控件有多个的情况,也就是同时上传多个文件,此时要求上述方法的参数是一个列表或者数组,下面描述同时上传多个文件的实现步骤:
构建上传表单
下面的示例代码中,名称为upload的File控件有多个,表示要同时上传多个文件。
- <s:form></s:form>"upload" action="customer/upload.action" method="POST"
- enctype="multipart/form-data">
- <s:file></s:file>"File (1)" name="upload" />
- <s:file></s:file>"File (2)" name="upload" />
- <s:file></s:file>"FIle (3)" name="upload" />
- <s:submit> </s:submit>
-
实现Action
这里重点列举必须实现的三个设值方法,我们可以注意到,方法名称是单数形式,但是参数是一个列表。
java 代码
- public void setUploadContentType( List<string> uploadContentTypes) </string>
- {
- this.uploadContentType = uploadContentTypes;
- }
-
- public void setUploadFileName( List<string> uploadFileNames) </string>
- {
- this.uploadFileName = uploadFileNames;
- }
-
- public void setUpload( List<file> uploads) </file>
- {
- this.upload = uploads;
- }
配置拦截器
具体的配置不再赘述,需要提一下的是此拦截器支持allowTypes和maximumSize属性,支持限制文件类型及文件大小。
另外在捕获错误时,会设置几个字段错误,字段错误的消息可以在资源文件中配置,支持的三种错误类型的键值如下:
struts.messages.error.uploading……当文件不能被上传时的错误信息。
struts.messages.error.file.too.large……文件大小超限时的错误信息。
struts.messages.error.content.type.not.allowed……文件类型不允许时的错误信息。
全局配置
可以在struts.properties文件中设置上传文件保存的临时目录,最大大小等。
下载
下载是通过StreamResult类来实现,这是一个自定义结果类型,主要作用是直接向HttpServletResponse对象发送原始数据。 StreamResult假定Action会提供一个输入流的访问方法,并将这个输入流输出到响应对象中。
SteamResult还提供如下配置属性。
contentType……发送数据的MIME类型,比如text/plain
contentLength……内容长度,单位为字节,浏览器会基于此值显示进度条
contentDispostion……设置响应头Content-disposition的值,缺省为inline
bufferSize……从输入流中读取到输出流的缓存大小
inputName……action中提供输入流的属性名称,缺省为inputStream
下面是一个StreamResult的配置示例:
xml 代码
- <action name="download2" class="org.apache.struts2.showcase.filedownload.FileDownloadAction">
- <param name="inputPath">\images\struts-gif.zip</param>
- <result name="success" type="stream">
- <param name="contentType">application/zip</param>
- <param name="inputName">inputStream</param>
- <param name="contentDisposition">filename="struts-gif.zip"</param>
- <param name="bufferSize">4096</param>
- </result>
- </action>
注意:Result对象中可以通过OGNL语法访问值堆栈,这意味着可以通过Action或其他方式传递值来设置Result配置参数,比如上述配置中contentDisposition通常是动态的,这可以通过action传递。
分享到:
相关推荐
本篇文章将全面解析Struts2.0中的文件上传和下载流程。 ### 文件上传 文件上传的核心在于`multipart/form-data`编码类型,这是HTML表单用于上传文件的必需属性。在示例中,我们看到一个简单的Struts2表单,其中...
01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) 03 Struts 2.0的Action讲解...09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX
以下是对Struts2.0文件上传原理的详细解释: 1. **HTTP协议与表单提交** 在HTML表单中,如果需要上传文件,`<form>`标签必须包含`enctype="multipart/form-data"`属性。这是因为普通POST请求无法处理二进制数据,...
Struts2.0文件上传是Java Web开发中的一个重要实践,它允许用户在Web应用程序中上传文件,例如图片、文档或音频文件。这个实例是针对初学者设计的,可以帮助理解并实现这一功能。以下是对Struts2.0文件上传机制及其...
Struts 2.0系列(MAX),pdf格式,全方位介绍struts2: 常用的Struts 2.0的标志(Tag)介绍 ...在Struts 2中实现文件上传 在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 Struts 2与AJAX
这个案例展示了Struts2.0文件上传的基本流程,包括Action类的编写、Struts配置、文件上传逻辑以及前端表单设计。通过这种方式,开发者可以灵活地控制文件上传的过程,确保安全性并提供友好的用户体验。同时,这个...
Struts2.0 文件上传下载是Java Web开发中常见的功能,它涉及到客户端与服务器的数据交互。Struts2作为一款强大的MVC框架,提供了方便的文件上传和下载支持。本篇文章将深入探讨Struts2实现文件上传下载的核心概念、...
下面我们将深入探讨如何在Struts2.0中实现文件上传和下载。 ### 文件上传 1. **依赖库**:首先,你需要在项目中引入Apache Commons FileUpload和Commons IO库。这两个库提供了处理文件上传的基本工具和功能。 2. ...
下面我们将详细探讨Struts2.0中的文件上传和下载实现。 ### 一、文件上传 文件上传在Struts2中主要依赖于Apache的Commons FileUpload库。以下是一些关键知识点: 1. **配置Action类**:创建一个Action类来处理...
总的来说,Struts2.0通过结合`Commons FileUpload`库,提供了简洁的API来处理文件上传和下载,使得开发者能够专注于业务逻辑,而不是底层的I/O操作。在实际应用中,我们还需要考虑错误处理、安全性(如防止文件覆盖...
文件上传是Web应用中的常见需求,Struts2.0提供了完善的文件上传解决方案。它利用MultipartResolver接口处理多部分请求,支持单文件和多文件上传。开发者只需简单配置,即可轻松实现文件上传功能。 十、Struts2.0中...
5. **插件架构**:Struts2.0具有丰富的插件支持,如文件上传、日期时间选择等,这些插件可以轻松地扩展框架功能。 SSH集成步骤: 1. **Spring**:Spring提供依赖注入(DI)和面向切面编程(AOP),负责管理和协调...
在Struts2.0框架中,文件上传是一个常见的功能,特别是在处理大文件或者需要用户反馈上传状态的应用场景中。为了提供更好的用户体验,我们通常会希望实现一个文件上传进度条,以便用户可以直观地看到文件上传的进度...
在Struts2.0框架中实现文件上传进度是一项常见的需求,尤其在用户上传大文件时,实时显示上传进度可以提供更好的用户体验。本文将详细介绍如何利用Struts2.0的监听器来实现这一功能。 首先,我们需要理解文件上传的...
这个“struts2.0上传文件源码”提供了一个完整的示例,展示了如何在Struts2.0环境中实现文件上传功能。在Web应用中,文件上传是常见的需求,例如用户可能需要上传头像、文档或者其他类型的数据。 在Struts2.0中,...
这个源代码包包含了Struts2.0的核心功能以及实现上传与下载功能和数据库操作的示例。 Struts2的核心概念之一是模型-视图-控制器(MVC)架构,它将业务逻辑、数据和用户界面分离开来,使得开发者可以独立地处理各个...
功能强大的Struts2.0+Extjs实现的文件上传,包含文件上传进度,文件的下载,压缩,解压多文件删除等
了解以上知识点后,初学者可以通过"CCdownup"这个项目学习到如何在Struts2.0框架下实现文件上传和下载功能,同时理解框架与实际业务逻辑的结合方式。在实践中不断探索,将有助于深化对Struts2.0的理解,并提升Web...