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来处理HTTP请求中的文件,然后利用Commons IO进行文件的保存和管理,而JSPSmart Upload则负责提供交互式的前端界面和多文件上传能力。通过这些库,开发者可以避免重复造轮子,...
总的来说,"cos spring fileupload"的主题涵盖了如何在Spring MVC环境中使用腾讯云COS进行文件上传,涉及的关键技术点有"CosMultipartResolver"自定义解析器、COS Java SDK以及相关的配置和编程实践。理解并掌握这些...
在Java Web开发中,文件上传是一项常见的功能,Apache Commons FileUpload和Smart Upload是两个常用的文件上传组件。这里我们将深入探讨这两个库以及如何在实际项目中使用它们。 首先,Apache Commons FileUpload是...
1、利用org.apache.commons.fileupload编写的文件上传和下载的前台和后台代码,前台代码是Jsp,后台是用servlet处理,共2个例子,各有不同,比较使用; 2、有用jspSmartupload制作一个文件上传和下载的例子,其制作...
本教程将详细介绍如何使用JSP和潇湘组件来实现一个简单的文件上传系统。 首先,潇湘组件是Java Web开发中的一个开源工具,提供了方便的文件上传功能。它简化了处理HTTP请求中包含的多部分数据(如文件)的过程,...
【标题】"jsp 文件上传 fileupload" 描述的是一个基于JSP实现的文件上传系统,该系统具备文件管理功能,并且允许用户进行登录操作。在系统中,管理员可以通过/admin.jsp页面进行管理,登录的用户名和密码都设定为...
JSP Smart Upload,基于JSP的文件上传
在示例代码中,可以看到JSP页面导入了 `com.jspsmart.upload.*` 包,这表明正在使用SmartUpload组件。然后,实例化 `SmartUpload` 类并进行初始化。接着,设置了最大文件大小、允许上传的文件类型,并执行了文件...
这个仿163网盘无刷新文件上传系统,并没有用使用控件,完全的手工制作。 本来觉得这个系统会很复杂,但把每个部分都分析清楚后,其实需要的技术并不高。不过当我把各个功能函数...经过几次尝试才把整个结构封装好。
综上所述,这个压缩包提供的源码应该是一个完整的示例,涵盖了使用Apache Commons FileUpload库在JSP中实现文件上传的全部流程,包括从接收文件到验证和存储文件的所有步骤。通过学习和理解这个源码,开发者可以快速...
本人亲自使用cos,smartupload,fileupload做的文件上传得小例子,只用了基本功能,注释非常详细,一看就能学会。测试时请使用图片上传,以便达到最佳效果。转载请注明原作者名,请珍惜他人劳动成果。
本话题主要涉及的是"smartupload/fileupload/cos"三种常用的下载组件,这些组件在Java JSP环境中被广泛使用。接下来,我们将深入探讨这三个组件及其在实际开发中的应用。 首先,SmartUpload是一个功能强大的Java...
COS这个文件上传组件可以说在几个开源的上传文件组件中性能是非常优秀的,上传速度很快(相比fileUpload,smart等组件),但在使用Struts2结合COS文件上传时要注意Struts2实现了自己的MultiPartRequest,这个过滤后的...
【标题】:基于Apache Commons FileUpload的JSP文件上传实现 Apache Commons FileUpload是一个非常流行的Java库,专门用于处理HTTP请求中的多部分数据,也就是通常所说的文件上传功能。在JSP(JavaServer Pages)中...
Apache Commons FileUpload是Apache软件基金会的一个项目,它为Servlet和JSP应用提供了处理文件上传的能力。在传统的HTTP协议中,文件上传通常涉及multipart/form-data编码,而FileUpload库则处理这种编码格式,使得...
这里提到的"springmvc上传io和fileupload jar包"是指在Java Web开发中用于处理文件上传的两个关键库:Apache Commons IO和Apache Commons FileUpload。这两个库是Spring MVC实现文件上传功能的重要依赖。 Apache ...
开发工具 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...
在本例中,我们将关注如何使用JSP结合Apache Commons FileUpload库来实现图片上传,并探讨这两个关键的jar文件——`commons-fileupload.jar`和`commons-io.jar`的作用。 `commons-fileupload.jar`是Apache Commons ...