`
- 浏览:
1007780 次
- 性别:
- 来自:
广州
-
strtus2.0实现上传
实现原理
Struts 2是通过Commons FileUpload文件上传。
1.Commons FileUpload通过将HTTP的数据保存到临时文件夹,我们可以设置保存临时文件夹的路径,若不设置那么它会放到tomcat服务器安装目录下\work\Catalina\localhost\你的项目名下的文件夹;如我的将上传文件项目Struts2Upload发布到tomcat后,那么上传的文件的临时文件会保存形如:D:\Java\apache-tomcat-6.0.20\work\Catalina\localhost\Struts2Upload\upload_243601eb_1277f7c2df8__7ffc_00000001.tmp,我们在action类里再相当于本地的资源一样来读取,再转移到如数据库等的地方去。总之,我觉得上传文件时,数据会随用户的提交,而由浏览器端将识别出的传输文件标签,将本地的文件转化为文件流,再通过建立好的tcp连接(每次用户访问一个页面时,会建立tcp连接,服务器应答完响应后会断开连接),将数据上传至服务器,应该是这样,而不是用服务器端的action类或servlet类来完成传输的,应该是浏览器对上传文件标签的解析,从而完成本地资源的传输的。
2.然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。
以下是例子所依赖类包的列表:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.14.jar
xwork-2.0.7.jar
注意:
1.页面的表单enctype须设置为"multipart/form-data";
2.<s:file name="loadFile">标签将上传文件赋值给ACTION中的File loadFile属性,并且将文件名,文件类型都会邦定到action类里去,就上面这个标签例子,action类里可以邦定如下属性:
/*
* 一个loadFile,
* 不但须设置setLoadFile(),
* 还需要设置setLoadFileContentType(String contentType):获取上传文件的MIME类型
* setLoadFileFileName(String fileName):上传文件的文件名,此文件名不包括文件路径
* 因此:
* <s:file name="xxx">,则ACTION中要有三个对应的setter方法:
* setxxx(),
* setxxxContentType(String contentType)
* setxxxFileName(String fileName)
* */
private File loadFile;
private String contentType;
private String fileName;
(2)能获取到本地文件信息,那在服务器端的操作就很容易了。
strtus2.0实现下载
(1) 实现下载也不难,在页面上显示待下载的资源的链接,将链接与action类链接起来,当用户点击时,会到action类去, action类里得到下载资源的路径(这个路径一般写在配置文件或者从数据库里查出来),有路径就可以给出一个读取服务器端资源的输入流,并将该流交邦定给页面端。这主要是用struts.xml配置来实现:<result name="success" type="stream">这句可以将从action类跳转到页面时,以输出流的形式跳转,当浏览器识别出是以流的形式返回的页面时,它会弹出一个保存(打开)的对话框,从而实现下载的功能,上面都是我个人理解,如有不对,希望大家直接指出。
(2) 以流的形式跳转到页面前,我们可以给出其它参数:
contentType:文件类型
inputName:这个就是文件流,主要的参数,其它都是辅助说明
contentDisposition:这个是文件的描述
bufferSize:缓冲的大小,这个我没研究过,可能还有其它参数,我没时间去研究,所以就列出这几个。
这样后在页面端弹出的保存文件对话框会将contentDisposition的信息在“名称”那里显示出来。
(3) 下载还涉及到中文文件名等的问题,所以也要处理,具体可以参考如下文章:
http://shenzhenchufa.blog.51cto.com/730213/271288
附件是可运行有上传与下载的例子。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
通过研究这些代码,开发者可以学习到实际应用中的Struts2文件上传下载流程。 总之,Struts2文件上传和下载是Web开发中必不可少的功能,涉及的技术点包括表单处理、文件流操作、服务器配置以及错误处理。通过理解和...
Struts2是一个流行的Java Web框架...通过这个详细的源码,你可以深入学习Struts2框架处理文件上传和下载的核心机制,同时也能提升对Java Web开发的理解。在实践中不断探索,你将能够更好地掌握Struts2和其他相关技术。
在Struts2中,文件上传和下载是常见的功能需求,尤其对于处理用户提交的表单数据时,如上传图片、文档等。这个"struts2_上传下载"实例则涵盖了多种实现这些功能的方法。 首先,Struts2的文件上传依赖于Apache的...
在Action类中,我们需要创建一个`File`类型的属性,与表单字段对应,Struts2会自动将上传的文件内容填充到这个属性中。同时,还需要指定一个临时存储路径,用于存放上传的文件。 接着,我们创建一个JSP页面作为用户...
总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...
Struts2是一个强大的Java web应用...通过这个示例,开发者可以学习到如何在Struts2项目中实现文件上传功能,并了解其背后的原理和最佳实践。同时,也可以了解到如何与其他开发者共享和学习代码,从而提升自己的技能。
本项目"基于Struts1.2的上传下载Demo"是针对该框架的一个实践示例,旨在帮助开发者理解和解决在Struts1.2环境中进行文件上传与下载的问题。 首先,让我们深入了解一下Struts1.2中的文件上传功能。在Struts1.2中,...
在这个"struts1.2 图片上传下载 源代码"中,我们可以学习到如何利用Struts1.2框架来实现这一功能。 首先,我们需要了解Struts1.2中的ActionForm类。ActionForm是模型层与控制器层之间的桥梁,用于接收和封装用户的...
学习Struts2文件上传不仅需要掌握上述概念和技术,还需要了解文件安全性、异常处理和服务器配置等相关知识。在实际应用中,确保文件上传的健壮性和安全性是至关重要的,比如防止文件覆盖、大小限制、非法文件类型...
学习这个案例,你可以了解到如何在实际项目中实现文件上传与下载,包括前端的交互设计、后端的接收处理以及可能的云存储集成。这将有助于提升你在Java Web开发中的实战技能,特别是对于新手来说,这两个DEMO提供了一...
例如,Struts 1和Struts 2在处理文件上传和下载的方式上有显著区别,Struts 2引入了更多面向Action的API和拦截器机制。 5. **源代码分析** 在提供的压缩包文件`upload`中,可能包含了Action类、Struts配置文件、...
在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户通过表单提交的文件,或者允许用户从服务器下载文件。这些功能极大地增强了Web应用的交互性和实用性。 在Struts2中实现文件上传,主要涉及到以下几...
Struts2文件上传进度条是Web开发中一个实用的功能,它允许用户在文件上传过程中查看当前的上传进度,提供更好的用户体验。在这个项目中,我们利用Struts2框架的拦截器机制来实现这一功能。 首先,我们需要理解...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC struts2介绍之使用连接...
Struts2是一个强大的MVC(模型-视图-控制器)框架,常用于构建Java Web应用程序。...通过这个案例,开发者可以学习到如何将Web应用中的文件操作与数据库存储相结合,实现文件上传、存储和下载的完整流程。
在这个"struts2上传下载"项目中,重点是实现文件和图像的上传与下载功能,这对于许多Web应用来说是一个常见的需求,如社交媒体、文档管理或者个人云存储服务。 1. **Struts2框架详解** - **MVC架构**:Struts2的...
为了学习和实践Struts2的文件上传,你可以解压这个文件,查看其中的Action类、`struts.xml`配置文件,以及可能的JSP页面,以理解整个流程。 总结来说,Struts2的文件上传涉及到拦截器配置、Action类的编写以及...
总结一下,本资源中涉及的Struts2全注解方式实现文件上传与下载的关键点包括: 1. 使用`@Action`和`@Result`注解进行Action配置。 2. `@Params`和`@Param`注解处理文件上传参数,定义文件属性并进行安全验证。 3. ...
Struts2上传下载,可以更方便的让大家学习、使用