更新:fastupload 0.4.2支持文件上传过滤机制,在解析multipart/form-data请求数据过程中,如果发现boundary内的content- header不符合设定的规则,fastupload组件直接跳过这个boundary。相比较同类的组件或者框架的集成的处理,这个过滤机制更先进更有 效率。目前,fastupload支持文件拓展名过滤规则和content-type过滤规则,在解析过程中,只要发现不符合任一规则,立即跳过这个 boundary,并记录这个content-header信息。
API使用如下:
MultiPartDataFactory mpdf = new MemoryMultiPartDataFactory(); multiPartDataFactory.setAllowedTypes("image/jpg"); multiPartDataFactory.setAllowedExtensions(".jpg, .png"); HttpMemoryUploadParser httpMemoryUploadParser = new HttpMemoryUploadParser( request, mpdf); List<MemoryMultiPartData> list = httpMemoryUploadParser.parseList(); for (MemoryMultiPartData e : list) { if (e.isFile()) { e.toFile(System.getProperty("user.home" + "/" + e.getFileName()); } else { if (e.getBytes() > 0) System.out.println(new String(e.getContentBuffer())); } } //获取未通过的边界header信息 Set<ContentHeaderMap> exceptionals = mpdf.getExceptionals();
除MemoryMultiPartDataFactory外,DiskFileFactory也支持这两种过滤规则。详细的HttpMemoryUploadParser和HttpFileUploadParser文档
介绍:
fastupload根据RFC 1867文档规范,编写的基于表单文件上传的组件,支持表单多文件上传,二进制文件与文本文件分开处理,彻底解决上传文本文件编码问题,支持文件上传大小限制,支持文件上传进度计算,api接口简明,比Apache Common File Upload速度快、稳定性高,无需任何第三方库的支持。
完整的功能列表:
- 支持上传多个文件
- 支持sub-boundary
- 提供“一次性”的编码解决方案
- “预先“的过滤机制
- 支持单个上传文件大小限制,支持上传请求大小限制
- 支持文件上传进度
项目地址: https://sourceforge.net/projects/fastupload/
相关的博客:http://mojarra.iteye.com/category/222356
fastupload的未来:与Spring MVC的集成正在开发之中,与Struts2的集成工作正在计划之中,Tomcat7集成还在蓝图之中。
为了完成这些计划和蓝图,fastupload召集开源志愿者,http://mojarra.iteye.com/blog/1696697