cos和fileupload、jspsmart的比较
测试比较,使用2M、20M、45M、200M的上传大小测试三种组件所花费的时间(单位为ms)结果是:
从上述的表格对比中可以看出Cos始终保持着良好的性能。在上传量较小(容量<2M,这是最常出现的情况)时,Cos比FileUpload性能并没有好很多,但SmartUpload就已经开始显出弱势。
随着容量的增大,FileUpload和SmartUpload的性能下降非常快,直到200M容量时,SmartUpload已经不堪重负崩溃了,而Cos此时的花费时间比FileUpload少了20多秒,不能不说在本次的评测中,Cos的性能位居第一。
通过对三种流行的上传组件进行对比,我认为选用Cos是比较好的。在实际的项目中,可以把上传的文件放到文件夹,文件路径存于数据库中以便于管理。
如果需要把文件上传到数据库也很简单,从Cos中已经得到了上传文件(java.io.File),其后的操作很平常所做的一样: 通过File得到inputStream,存到数据库的blob或Clob字段即可。
对于使用Struts的项目,我觉得还是使用FileUpload比较好,因为Struts天生集成了FileUpload的功能,使用FileUpload会带来很多的便利。而如果想要开发独立的上传组件,则用Cos是最好的选择,可以在Cos的基础上封装一层,暴露给业务程序员的只是一些简单易用的API,而且可以给这些API加上自定义的javaDoc,这对于实际的开发和将来的扩展都是非常方便的。
下面对FileUpload的上传机制作一些分析,基本上,上传一个文件的过程在FileUpload中可以分为三个部分:
1.由客户端把要上传的文件生成request数据流,与服务器端建立连接
2.在服务器端接收request流,将流缓存到内存或磁盘中(具体缓存到什么地方,将由DiskFileUpload的setSizeThreshold(int cacheMax)方法来决定,当文件大小<cacheMax时,文件将被缓存到内存,否则将被缓存到磁盘的临时文件)
3.由服务器端的内存或是临时文件中把文件输出到指定的目录(这个目录才是指定的文件上传目录).
上述的第一步由浏览器完成,不用过多理会,重点是第二和第三步。
第二步时,由DiskFileUpload的parseRequest(...)方法(其实这个方法是继承于FileUploadBase类,真正起解析request流作用的类是FileUploadBase)解析request流。在parseRequest(...)方法中,新建了一个MultipartStream实例,由此实例的readBodyData()方法将上传文件的流读到FileItem实例中,FileItem实例根据设置好的cacheMax大小,引用一个内存中的数据流或是一个磁盘上的数据流,注意此时文件已经上传到了服务器,但仍然没有传到设定的上传目录。
第三步时,调用FileItem实例的write(File file)方法,将已经存在于内存或是磁盘上的上传文件流拷贝到设定好的上传目录,至此上传仍未结束,因为磁盘中很可能保存了上传文件的临时文件(当设定的cacheMax<文件大小时),如何删除这些临时文件?有两种方法:1.显示调用FileItem实例的delete()方法。2.不调用任何方法,当FileItem被垃圾回收时,由finalize()方法删除临时文件。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuyf8688/archive/2007/03/22/1537693.aspx
分享到:
相关推荐
fileupload jsp上传下载组件和使用方法
里面包含了常用的上传用的commons-fileupload-1.2.1和commons-io-1.4以及下载用的jspsmartupload和有汉语情况时用到的jspsmart_zh_CN
1、利用org.apache.commons.fileupload编写的文件上传和下载的前台和后台代码,前台代码是Jsp,后台是用servlet处理,共2个例子,各有不同,比较使用; 2、有用jspSmartupload制作一个文件上传和下载的例子,其制作...
JSP Smart Upload,基于JSP的文件上传
spring fileupload CosMultipartResolver cos.jar
自己做的一个文件上传小系统,支持文件的管理,/admin.jsp 密码和用户都是admin,有什么地方不好的,希望给我留言!用到的数据库:mysql;上传组件:fileupload
这是采用潇湘组件实现的文件上传系统案理,需要resin或tomcat,可以用来上传本科生计算机文化基础的作业。
里面包含了,Commons-fileupload和smartupload两种上传文件的代码实例。
这个仿163网盘无刷新文件上传系统,并没有用使用控件,完全的手工制作。 本来觉得这个系统会很复杂,但把每个部分都分析清楚后,其实需要的技术并不高。不过当我把各个功能函数...经过几次尝试才把整个结构封装好。
本人亲自使用cos,smartupload,fileupload做的文件上传得小例子,只用了基本功能,注释非常详细,一看就能学会。测试时请使用图片上传,以便达到最佳效果。转载请注明原作者名,请珍惜他人劳动成果。
COS这个文件上传组件可以说在几个开源的上传文件组件中性能是非常优秀的,上传速度很快(相比fileUpload,smart等组件),但在使用Struts2结合COS文件上传时要注意Struts2实现了自己的MultiPartRequest,这个过滤后的...
commons-fileupload实现jsp上传实例(源码),本源码在本机测试通过。
本人编写了一个名为《commons-fileupload实现jsp上传实例(教程)》的文档,此次上传资源为该文档对应的源代码。
FileUpload_jsp无刷新文件上传源码.zip
该上传的实现使用到了apache公司的fileupload组件。通过“上传页面”把上传路径提交到upload.jsp页面进行处理,然后把照片文件上传并保存到服务器上。处理代码如下: (); ServletFileUpload upload = new ...
一个简单的jsp上传实例,使用commons-fileupload实现。其代码已经上传在另外一个资源里。该文档也在附录中附了代码。
开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2...
[上传下载]网盘无刷新文件上传 for Jsp_fileupload_jsp 这两年太卷了,毕设和毕业 答辩竞争激烈,越写越卷,没有创新和亮点的毕业答辩基本达不到老师的要求。 现在学长为你们准备计算机毕设JSP项目,需要的自取哦。...
因为jspsmartupload上传大文件的时候,比较慢。所以这里选择了commons-fileupload这个组件。 在网上有很多文章教我们怎样去做,但是往往都是很难做得出来的! 所以我这里给出了一个完整的例子!里面已经有所需要用到...
jsp上传图片 用到了:commons-fileupload.jar和commons-io.jar 我都压缩进去了..