`
Mojarra
  • 浏览: 130044 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

开源项目fastupload 0.2.3发布

 
阅读更多
fastupload 0.2.3发布,增加了对sub-boundary的支持,修复了一个在0.1.1版本中发现的可能因为数据块末尾不包含完整上传文件信息的bug,新增加类,HttpFileUploadParser,担负文件上传的解析工作,原类FileUploadParser不再承担解析Http文件的功能。

新的api使用如下,
@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//创建DiskFileFactory, 以utf-8编码解析文件上传请求,指定解析后文件存放在用户home目录下
		DiskFileFactory dff = new DiskFileFactory(System.getProperty("user.home") + "/", "utf-8"); 
		HttpFileUploadParser parser = new HttpFileUploadParser(req, dff);
		parser.parse();
	}





fastupload是目前为止处理文件上传类中最快的java实现,比apache common file upload快约约30~40%,内存占用小。

下载地址,https://sourceforge.net/projects/fastupload/files/

未来:
fastupload将会提供对Spring MVC、Struts2等流行web开发框架的支持。


历史:
开源项目fastupload 0.1.1发布, 链接: http://www.iteye.com/topic/1123990
0
1
分享到:
评论
2 楼 Mojarra 2012-07-11  
cokolin 写道
借问一声,跟Servlet3.0-api新的文件上传类 javax.servlet.http.Part,相比,那个性能比较好呢?


测试了一下Servlet3.0规范中的,限于时间关系,只测试了比较小的那组文件(可以看这里, http://mojarra.iteye.com/blog/1581521), 从数据上看,Servlet 3.0规范中的文件上传部分的API性能不及Apache Common File Upload。下面是测试数据

Servlet 3 upload costs: 38 
Servlet 3 upload costs: 12 
Servlet 3 upload costs: 14 
Servlet 3 upload costs: 12 
Servlet 3 upload costs: 12 
Servlet 3 upload costs: 11 
Servlet 3 upload costs: 15 
Servlet 3 upload costs: 15 
Servlet 3 upload costs: 16 
Servlet 3 upload costs: 13 
Servlet 3 upload costs: 12 
Servlet 3 upload costs: 11 
Servlet 3 upload costs: 12 
Servlet 3 upload costs: 17 
Servlet 3 upload costs: 11 
Servlet 3 upload costs: 15 
Servlet 3 upload costs: 15 
Servlet 3 upload costs: 183 
Servlet 3 upload costs: 44 



完整的测试代码,有兴趣可以自己测试一下
@WebServlet("/s3upload")
@MultipartConfig()
public class Servlet3FileUpload extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		String home = System.getProperty("user.home");
		long s = System.currentTimeMillis();
		Collection<Part> parts = request.getParts();
		for (Part p : parts) {
			String fn = String.format("%s/%s", home, p.getName());
			FileOutputStream out = new FileOutputStream(new File(fn));
			byte[] buffer = new byte[8192];
			InputStream is = p.getInputStream();
			int c = 0;
			while ((c = is.read(buffer)) != -1) {
				out.write(buffer, 0, c);
			}
			out.close();
		}
		System.out.format("Servlet 3 upload costs: %d %n", System.currentTimeMillis() - s);
	}
}
1 楼 cokolin 2012-07-06  
借问一声,跟Servlet3.0-api新的文件上传类 javax.servlet.http.Part,相比,那个性能比较好呢?

相关推荐

    fastupload 0.2.3 vs. common file upload 1.2.2

    总结来说,FastUpload 0.2.3 和 Common File Upload 1.2.2各有优缺点,选择哪个取决于具体项目的需求。FastUpload注重性能和灵活性,而Common File Upload强调兼容性和稳定性。无论选择哪一个,都应充分考虑项目的...

    Remix0.2.3 Remix0.2.3

    Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3Remix0.2.3...

    zhcon-0.2.3.rar

    6. **许可文件**:如COPYING,声明了该软件的版权和许可条款,通常遵循GPL、LGPL等开源许可证。 7. **库文件**:依赖的库文件或者编译后的二进制库,用于软件运行。 8. **测试用例**:可能包含测试脚本或样例数据,...

    Archiconda3-0.2.3-Linux-aarch64.zip

    标题中的"Archiconda3-0.2.3-Linux-aarch64.zip"是一个软件分发包,其中包含了一种特殊版本的Anaconda——Archiconda,版本号为0.2.3,专为Linux操作系统下的aarch64架构(也称为ARM64或AArch64)设计。Anaconda是一...

    SixaxisPairToolSetup-0.2.3.zip

    标题中的"SixaxisPairToolSetup-0.2.3.zip"是一个软件安装包,用于对PlayStation 3(PS3)的六轴无线控制器(通常称为Sixaxis或DualShock 3)进行特定的操作,主要是修改其蓝牙地址。这个工具可能对于那些希望重新...

    blogunity-0.2.3-standalone.zip

    6. **社区支持**: 开源项目往往拥有活跃的社区,用户可以通过论坛、邮件列表或GitHub上的问题跟踪器寻求帮助,或者参与项目的改进和开发。 7. **版本更新**: 随着时间的推移,BlogUnity团队会发布新的版本,修复...

    STK0.2.3DVD改开机画面,遥控,屛显码工具

    标题中的“STK0.2.3DVD改开机画面,遥控,屛显码工具”指的是一个特定版本的软件工具,主要用于修改DVD设备的启动画面、遥控器设置以及屏幕显示的代码,即屏显码。这个工具的版本是STK0.2.3,它在DVD定制和调试领域...

    WinSetupFromUSB 0.2.3

    WinSetupFromUSB最新版0.2.3版,这个版本比0.1.1增加了格式化为NTFS选项,安装速度快了不少。 大致步骤: 1.首先安装WinSetupFromUSB,默认位置为C:\WinSetupFromUSB; 2.安装完后(用管理员身份)运行...

    summingbird-storm_2.9.3-0.2.3.zip

    【标题】"Summingbird Storm 2.9.3-0.2.3" 是一个开源项目,专注于数据流处理和实时聚合。Summingbird 是一个库,它将分布式计算框架(如 Apache Storm)与批处理系统(如 Hadoop MapReduce)结合在一起,允许开发者...

    kamon-log-reporter_2.10-0.2.3.zip

    【标题】"Kamon Log Reporter 2.10-0.2.3"与【描述】中的"play-slick.zip,播放SlickSlick插件"分别代表了两个不同的IT领域知识点,它们都是开源项目,这表明它们遵循开放源代码的精神,允许开发者查看、使用、修改和...

    STK 0.2.3 支持8203R汉化(江南修正版).exe

    STK 0.2.3 支持8203R汉化(江南修正版).exe

    scala-activerecord-specs_2.9.2-0.2.3.zip

    "开源项目"标签表明Scala Activerecord是一个开放源代码的项目,这意味着它的源代码可以被公众查看、使用、修改并分发,遵循一定的开源许可证。这通常促进了社区参与、协作开发和代码共享。 **压缩包子文件名称:**...

    PyPI 官网下载 | kaf-0.2.3.tar.gz

    标题中的"PyPI 官网下载 | kaf-0.2.3.tar.gz"表明这是一个在Python Package Index(PyPI)官方源上发布的软件包,名为"kaf",其版本号为0.2.3,且以tar.gz格式提供。PyPI是Python开发者发布和分享自己编写的Python...

    TabletDriverV0.2.3_OSUTabletDriver_eazyspeaking_

    《平板驱动程序TabletDriverV0.2.3在OSU!游戏中的应用与详解》 在数字艺术和游戏领域,精准的输入设备是至关重要的,尤其是对于像OSU!这样的节奏点击游戏。TabletDriverV0.2.3正是为这类需求而设计的驱动程序,它专...

    WinSetupFromUSB_0.2.3

    《使用WinSetupFromUSB_0.2.3创建USB系统安装盘详解》 在现代的计算机操作中,系统安装介质已经从传统的光盘逐渐转变为便携式的USB设备。WinSetupFromUSB_0.2.3是一款高效且实用的工具,专为用户提供了便捷的USB...

    PyPI 官网下载 | pyppeteer_ghost_cursor-0.2.3.tar.gz

    `tar.gz`是一种常见的压缩格式,通常用于打包和分发开源软件,它将所有文件压缩到一个文件中以便于传输和存储。 标签中提到了"zookeeper 分布式 云原生 cloud native Python库",这暗示`pyppeteer_ghost_cursor`...

    Archiconda3-0.2.3-Linux-aarch64.rar

    conda是一个开源的包管理和环境管理系统,特别适合数据科学家和Python开发者,因为它可以方便地安装、管理Python和其他语言的依赖库,以及创建独立的环境来隔离不同项目之间的依赖关系。 **Archiconda3** 的作用...

    凌阳stk 0.2.3

    凌阳stk 0.2.3支持在线读写DVD数据

Global site tag (gtag.js) - Google Analytics