YYW'S BLOG 我思故我在

知识的分享就是知识的获得
posts - 58, comments - 279, trackbacks - 4, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

 
      就在前段时间,还在苦于找到不到合适的上传组件,虽然很早就知道了 common-fileupload,但当时却因为没有找到如何获取表单参数的方法而使用 jspSmartUpload,历尽艰辛终于找到了它的 jar,可是使用后才发现此东西对中文参数支持奇差,甚至需要修改源代码才能解决问题,可是jspSmartUpload并不是开源的项目,而且开发团队也不再对它进行更新,连官方网站都关门大吉了,情急之下使用JadClipse 反编译了它的jar包,原以为问题算是得到解决了,谁知道后来却发现获取到的参数经常出现部分中文乱码,而且还不是固定的汉字出现乱码,仔细研究加Google后才找出了规律,原来是奇数字数的中文会出现乱码,而偶数字数的则正常,阅读了源代码,终于还是没耐心阅读下去,而且看到网上还有评论说该组件有内存泄露的问题,于是才下定决定搞定common-fileupload。

      于是从 http://jakarta.apache.org/commons/fileupload/ 下载到了最新版的 FileUpload 1.2,阅读了部分文档跟例子,终于找到了获取表单中参数的方法并对该组件做了进一点封装,使其更容易使用,并支持单文件上传和多文件上传两种方式,首先定义一个基类放置公共属性:

FileUploadBase.java 


支持单文件上传的 SingleFileUpload 类:
SingleFileUpload.java


支持多文件上传的 MutiFileUpload 类:
MutiFileUpload.java


当然还少不了过滤器 UploadFileFilter:
UploadFileFilter.java 


这样在 Servlet 中我们就可以通过简单的代码实现文件的上传了:


相比 jspSmartUpload 我觉得 common-fileupload  有如下的优点:
1、开源;
2、Jakarta项目组的支持,开发十分活跃,而 jspSmartUpload 则已经停止开发了;
3、不需要写入文件之前即可获取到参数和文件信息,jspSmartUpload 则需要在获取之前调用 upload 方法;
4、对中文支持友好。

Feedback

#1楼  回复 引用   

2008-04-10 14:40 by Achou[未注册用户]
谢谢

#2楼  回复 引用   

2009-05-02 18:06 by jxpjxp
一看就知道你是个牛人,能把你智慧的果实发到我的邮箱里吗(压成JAR包),把它扔到LIB下就能使用了吧,先向你表示一下敬佩

#3楼  回复 引用   

2009-08-02 15:02 by qop007[未注册用户]
我用的是gm365.com上下的UFOUpload组件,没出现过内存泄漏问题。

#4楼  回复 引用   

2009-08-02 15:28 by 10092[未注册用户]

我用的是www.gm365.com上下的UFOUpload组件,没出现过内存泄漏问题。

#5楼  回复 引用   

2009-09-01 17:05 by tesst[未注册用户]
简直都是垃圾一个,还牛人呢,牛屎还差不多,谁说SmartUpload不上开源的了,每个组件都有自己的优势