首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

怎么实现文件下传

2012-11-06 
如何实现文件上传??? 如何实现文件上传?????? 开发Web程序通常需要文件上传功能,现在有很多免费的文件上传

如何实现文件上传
??? 如何实现文件上传

?????? 开发Web程序通常需要文件上传功能,现在有很多免费的文件上传组件,其中使用比较多的也是非常著名的有:

?????? FileUpload??? (http://jakarta.apache.org/site/downloads/downloads_commons-fileupload.cgi)

?????? Cos ????????? ??? (http://www.servlets.com/cos/index.html) 基于javabean组件

????? SmartUpload? (http://wwww.jspsmart.com) 完全基于JSP来处理上传的组件????????

????? 以下部分内容来自http://www.blogjava.net/caixuetao/articles/30841.html)

???? 它们的性能比较如下:

2M

?

第1次

第2次

第3次

第4次

平均

Cos

297

203

234

245

245

FileUpload

281

312

281

312

297

SmartUpload

531

594

485

532

536

?

20M

?

第1次

第2次

第3次

第4次

平均

Cos

2562

2109

2719

2172

2391

FileUpload

4062

4140

5360

3922

4371

SmartUpload

3453

3094

3078

3547

3293

?

45M

?

第1次

第2次

第3次

第4次

平均

Cos

4860

4844

5125

5171

5000

FileUpload

9000

8391

10375

10078

9461

SmartUpload

8265

9187

8672

8856

8745

?

200M

?

第1次

第2次

第3次

第4次

平均

Cos

55813

52282

54796

51187

53520

FileUpload

76343

68531

80954

79031

76215

SmartUpload

内存堆栈溢出

?

?

?

?

?

????? 从上述的表格对比中可以看出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,这对于实际的开发和将来的扩展都是非常方便的。

以下使用cos组件简单的实现文件上传功能:

1.???????? 将下载的cos.jar文件所在目录加入到环境变量classpath中<o:p></o:p>

        1. <%@?page?language=“java”contentType=“text/html;charset=GBK”%> ??
        2. <%@?page?import=“java.util.*”%> ??
        3. <%@?page?import=“org.apache.commons.fileupload.*”%> ??
        4. <html> ??
        5. <head> ??
        6. <title>文件上传</title> ??
        7. </head> ?&nbs
1 楼 Cecily 2007-03-07   <font>呵呵? 总结的很仔细啊 支持一下.我用SmartUpload做上传的时候确实觉得不好用于大数据量的传输.</font> 2 楼 ddandyy 2007-03-07   那堆框是怎么回事 3 楼 LucasLee 2007-03-07   我觉得总结的有一些疑问。
上传文件不仅是耗时问题,还有一个耗内存的问题,这一点在大文件处理时很重要。
似乎没有考虑,如果考虑这一点,可能那个处理时间也有变化了。 4 楼 ahuaxuan 2007-03-07   这个测试结果是不是有点误导人,不同的服务器应该是不一样的,这个测试是在什么服务器上做的? 服务器的最大内存设置是多少?这些最起码应该给出来,这样才全面一点 5 楼 NoName 2007-03-26   首先还是表示感谢,顶一下,Cos 以前没听说过,这下又多了个选择 6 楼 cozone_柯中 2007-03-27   NoName 写道首先还是表示感谢,顶一下,Cos 以前没听说过,这下又多了个选择

确实,支持以下 7 楼 andyandyandy 2007-03-27   以前都用fileupload,有机会看看cos,不知道lz测试的机器配置怎么样 8 楼 huangtut 2007-05-08   <br/>
<strong>Cecily 写道:</strong><br/>
<div class='quote_div'><font>呵呵? 总结的很仔细啊 支持一下.我用SmartUpload做上传的时候确实觉得不好用于大数据量的传输.</font></div>
<p>?</p>
<p>?</p>
<p>支持一下,以前一个项目smartUpload大于20M时经常出现无响应的状况,的确让人苦恼。<br/>
<br/>
<br/>
<br/>
</p> 9 楼 penghao122 2007-05-08   为什么有时候用smartUpload内存会100%呢

热点排行