`
wtnhwbb
  • 浏览: 166167 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts 2.0 文件上传/下载

阅读更多

文件上传

基本原理

        上传文件是由FileUploadInterceptor实现的,基本原理是这样的,FileUploadInterceptor会从上传的数据中解析出 上传的文件名称,文件类型和文件内容,调用Action相应的方法进行设置。

        假定上传表单中File控件的名称是upload,则Action必须实现如下三个设值方法:

setUploadFile……保存上传的文件内容
setUploadFileName……保存上传的文件名称
setUploadContentType……保存上传的文件类型

        拦截器支持针对上传表单同一名称的文件控件有多个的情况,也就是同时上传多个文件,此时要求上述方法的参数是一个列表或者数组,下面描述同时上传多个文件的实现步骤:

构建上传表单

        下面的示例代码中,名称为upload的File控件有多个,表示要同时上传多个文件。

  1. <s:form></s:form>"upload" action="customer/upload.action" method="POST"  
  2.  enctype="multipart/form-data">   
  3.  <s:file></s:file>"File (1)" name="upload" />   
  4.  <s:file></s:file>"File (2)" name="upload" />   
  5.  <s:file></s:file>"FIle (3)" name="upload" />   
  6.  <s:submit>   </s:submit>
  7.   

实现Action

        这里重点列举必须实现的三个设值方法,我们可以注意到,方法名称是单数形式,但是参数是一个列表。

java 代码
  1. public void setUploadContentType( List<string> uploadContentTypes)   </string>
  2. {   
  3.     this.uploadContentType = uploadContentTypes;   
  4. }   
  5.   
  6. public void setUploadFileName( List<string> uploadFileNames)   </string>
  7. {   
  8.     this.uploadFileName = uploadFileNames;   
  9. }   
  10.   
  11. public void setUpload( List<file> uploads)   </file>
  12. {   
  13.     this.upload = uploads;   
  14. }   
配置拦截器

        具体的配置不再赘述,需要提一下的是此拦截器支持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 代码
  1. <action name="download2" class="org.apache.struts2.showcase.filedownload.FileDownloadAction">  
  2.     <param name="inputPath">\images\struts-gif.zip</param>  
  3.     <result name="success" type="stream">  
  4.         <param name="contentType">application/zip</param>  
  5.         <param name="inputName">inputStream</param>  
  6.         <param name="contentDisposition">filename="struts-gif.zip"</param>  
  7.         <param name="bufferSize">4096</param>  
  8.     </result>  
  9. </action>  

        注意:Result对象中可以通过OGNL语法访问值堆栈,这意味着可以通过Action或其他方式传递值来设置Result配置参数,比如上述配置中contentDisposition通常是动态的,这可以通过action传递。

分享到:
评论
4 楼 xtaywang8 2011-05-25  
properties文件中
3 楼 Sellby 2008-11-10  
项目里正好要用,谢谢
2 楼 hunanxiaohuo 2008-09-03  
                                  
1 楼 lin_zy 2008-01-17  
[url][/url]
[img][/img]

相关推荐

    Struts2.0 文件上传与下载全解析

    本篇文章将全面解析Struts2.0中的文件上传和下载流程。 ### 文件上传 文件上传的核心在于`multipart/form-data`编码类型,这是HTML表单用于上传文件的必需属性。在示例中,我们看到一个简单的Struts2表单,其中...

    struts2.0中文教程

    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文件上传原理

    以下是对Struts2.0文件上传原理的详细解释: 1. **HTTP协议与表单提交** 在HTML表单中,如果需要上传文件,`&lt;form&gt;`标签必须包含`enctype="multipart/form-data"`属性。这是因为普通POST请求无法处理二进制数据,...

    Struts2.0文件上传实例

    Struts2.0文件上传是Java Web开发中的一个重要实践,它允许用户在Web应用程序中上传文件,例如图片、文档或音频文件。这个实例是针对初学者设计的,可以帮助理解并实现这一功能。以下是对Struts2.0文件上传机制及其...

    Struts 2.0系列(MAX)

    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 文件上传示例

    这个案例展示了Struts2.0文件上传的基本流程,包括Action类的编写、Struts配置、文件上传逻辑以及前端表单设计。通过这种方式,开发者可以灵活地控制文件上传的过程,确保安全性并提供友好的用户体验。同时,这个...

    struts2.0文件上传下载

    Struts2.0 文件上传下载是Java Web开发中常见的功能,它涉及到客户端与服务器的数据交互。Struts2作为一款强大的MVC框架,提供了方便的文件上传和下载支持。本篇文章将深入探讨Struts2实现文件上传下载的核心概念、...

    struts2.0的文件上传及下载

    下面我们将深入探讨如何在Struts2.0中实现文件上传和下载。 ### 文件上传 1. **依赖库**:首先,你需要在项目中引入Apache Commons FileUpload和Commons IO库。这两个库提供了处理文件上传的基本工具和功能。 2. ...

    Struts2.0文件上传与下载全解析[包括功能代码段]

    下面我们将详细探讨Struts2.0中的文件上传和下载实现。 ### 一、文件上传 文件上传在Struts2中主要依赖于Apache的Commons FileUpload库。以下是一些关键知识点: 1. **配置Action类**:创建一个Action类来处理...

    struts2.0文件的上传与下载

    总的来说,Struts2.0通过结合`Commons FileUpload`库,提供了简洁的API来处理文件上传和下载,使得开发者能够专注于业务逻辑,而不是底层的I/O操作。在实际应用中,我们还需要考虑错误处理、安全性(如防止文件覆盖...

    Struts_2.0从入门到精通

    文件上传是Web应用中的常见需求,Struts2.0提供了完善的文件上传解决方案。它利用MultipartResolver接口处理多部分请求,支持单文件和多文件上传。开发者只需简单配置,即可轻松实现文件上传功能。 十、Struts2.0中...

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    5. **插件架构**:Struts2.0具有丰富的插件支持,如文件上传、日期时间选择等,这些插件可以轻松地扩展框架功能。 SSH集成步骤: 1. **Spring**:Spring提供依赖注入(DI)和面向切面编程(AOP),负责管理和协调...

    Struts2.0文件上传进度

    在Struts2.0框架中,文件上传是一个常见的功能,特别是在处理大文件或者需要用户反馈上传状态的应用场景中。为了提供更好的用户体验,我们通常会希望实现一个文件上传进度条,以便用户可以直观地看到文件上传的进度...

    Struts2.0 实现文件上传进度

    在Struts2.0框架中实现文件上传进度是一项常见的需求,尤其在用户上传大文件时,实时显示上传进度可以提供更好的用户体验。本文将详细介绍如何利用Struts2.0的监听器来实现这一功能。 首先,我们需要理解文件上传的...

    struts2.0上传文件源码

    这个“struts2.0上传文件源码”提供了一个完整的示例,展示了如何在Struts2.0环境中实现文件上传功能。在Web应用中,文件上传是常见的需求,例如用户可能需要上传头像、文档或者其他类型的数据。 在Struts2.0中,...

    struts2.0源代码

    这个源代码包包含了Struts2.0的核心功能以及实现上传与下载功能和数据库操作的示例。 Struts2的核心概念之一是模型-视图-控制器(MVC)架构,它将业务逻辑、数据和用户界面分离开来,使得开发者可以独立地处理各个...

    struts2.0+Extjs文件上传例子

    功能强大的Struts2.0+Extjs实现的文件上传,包含文件上传进度,文件的下载,压缩,解压多文件删除等

    Struts2.0做的上传下载

    了解以上知识点后,初学者可以通过"CCdownup"这个项目学习到如何在Struts2.0框架下实现文件上传和下载功能,同时理解框架与实际业务逻辑的结合方式。在实践中不断探索,将有助于深化对Struts2.0的理解,并提升Web...

Global site tag (gtag.js) - Google Analytics