`
- 浏览:
998187 次
- 性别:
- 来自:
广州
-
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中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC struts2介绍之使用连接...
学习struts2 上传下载功能。基本方法 简单 实用
Struts2的文件上传下载,还有一些国际化用法,使用idea布置环境,适合新手上路学习struts2
Struts2上传下载,可以更方便的让大家学习、使用
使用struts2框架的一个文件上传demo。。大家互相学习学习,里面有注释了,觉得好的顶一下吧。
struts2 学习经典案例,包含struts2标签,上传下载,拦截器等。可以帮助了解struts2框架,并进行扩展
基于struts2的文件上传及下载,使用注解配置,内含相应的jar包,方便学习使用,
这是一个java上传与下载的案例,此案例有两个实现方式:struts2和servle,所以说有两个DEMO,可供新手学习。
《Struts 2完全学习手册》全面讲述Struts 2开发框架的知识,包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验、Struts 2强大的标签库、Struts 2中文件的上传与下载、Struts 2对...
struts2上传实例。对于学习struts上传的学习有很大的帮助
通过srtuts实现上传下载 想学习struts的赶快下载吧 好东西啊
struts2.0图片上传,文件的配置。struts2。0的学习。io的技术。
struts2学习笔记和源码,struts2原理。文件上传、i18n等等
struts2 实现多文件上传功能,是一个很好的学习参考资料
Jquery+struts2上传图片,制作进度条等示例,还有Jquery+Json+Struts实现Ajax技术,还有图形处理技术等,虽然很少,但都有重点突出,由于我也是学习,所以代码不是很简洁,对想学习交流的朋友非常合适
本代码是基于struts的实现了文件的上传和下载,适合初学者进行学习
本案例:struts文件上传/下载,支持多文件上传/下载。可供学习struts上传文件者,有所帮助
使用struts2写了一个超级简易的上传下载的Demo,可供新手学习
在网络上,对于Java处理文件上传和下载的技术比较多,而Struts作为一款优秀的框架也提供了非常方便的文件上传和下载,而网上的一些例程都非常的不全面,概括来: 1) 文件上传比较多,多文件上传少一点 2) 文件下载很...
struts2+jsp 文件上传,供大家一起共同分享学习。