一、需求和背景:公司内网月度会议文档过大有的超过50M,原先的上传组件利用struts upload+io流如果上传文件过大会导致内存溢出。而且客户那边还迫切的希望有个大附件上传的功能。
二、
1、[swfupload] 组件下载 http://swfupload.googlecode.com(SWFUpload v2.2.0.1 Core.zip )
2、[COS 上传组件]下载 http://www.servlets.com/cos/index.html (cos-26Dec2008.zip)
3、将swfupload和cos整合,
第一步:先让swfupload跑起来,编写index.jsp:
注:1、所有的js和css文件都是从官网上下载下来的,没有什么特殊的改变。
2、upload_url: "up/upload.jsp",这里的“up/upload.jsp”可以用一个jsp页面写上传类(cos),我这里用servelet配置的路径
2、web.xm配置:
注:1、fileSizeLimit是配置允许上传大小的500,代表500M。
3、编写SimpleUploaderServlet类(利用cos.jar上传):
注:1、MyFileRenamePolicy是自定义文件重命名的方法。
另外考虑到cos与struts1.x的结合有缺陷,如果想保存上传后的文件信息,可以利用别的方法,如存入到session中。
demo下载地址:http://download.csdn.net/source/2180135
效果图:
另外在网上google了下Cos ,FileUpload ,SmartUpload 上传文件性能比较,自己也测试了下Cos和struts upload,发现的确Cos是挺快的,尤其是大的附件的时候。
这个是网上其它人测试的 使用2M、20M、45M、200M的上传大小测试三种组件所花费的时间(单位为ms):