日期:2014-05-17  浏览次数:20700 次

大家进来讨论一下JAVA大文件(百M以上)的上传下载实现技术
我们的项目中客户有这个需求,因为在外出差的工程人员需要从系统里下载一些解决问题的相关附件,大的几百M,服务完毕还要上传服务附件,也是小的几十M,大的上百M。

目前的实现技术是使用struts1的FormFile,commons-fileupload,混用,也就是表单上传方式。我们开发都是在本机测试的,上传可下载的速度都是2、3M/s,可是实际中都是互联网上传,客户反应附件大了根本传不上。

分析一下目前实现方式
表单上传会占用大量的服务器内存,如果同时很多用户一起上传那可能是一场悲剧。
上传和下载的速度必然受到网络的迫害,如果网络稍微断那么1秒钟,之前的努力就全报废了,不支持断点。网络好上传的就快点,不好那就根本传不上去。

在网上搜了下相关的问题,有用FTP的,但是那个感觉很麻烦,还要再装个FTP服务器什么的。有用FLASH的,那东西收费?还有用ActiveX控件?貌似只有IE支持?当然表单上传都说别传100M以上的。对了,还有Applet,这个还要客户端安装,感觉麻烦啊。。。

想问问大家在实际项目中遇到过这样的需求么?采用何种方式实现的呢?

------解决方案--------------------
FTP是正道。
------解决方案--------------------
Mark
没做过..
等楼下 各位大侠..
------解决方案--------------------
FTP 目前唯一办法。
------解决方案--------------------
这是一个老生常谈的设计性问题。想通过HTTP进行文件传输会遇到的瓶颈就是HTTP协议并非为传输大型文件所设计和发明的,所以如果你想把大文件上传到服务器上,那必须考虑使用别的协议来避开HTTP的瓶颈,例如FTP。这样的话基于浏览器的上传就不太现实,必须用别的工具来实现,如Applet,Flash等。
------解决方案--------------------
在上传的时候,系统自动根据大小判断是否需要分割文件,如果超过单个文件上传大小,则将文件分割成几个小文件,陆续上传(对于用户来说还是指上传了一个文件),上传完之后再合并成一个文件。
------解决方案--------------------
使用FTP上传,sun.net.ftp.FtpClient,查查,到处都是
------解决方案--------------------
还是别让web做它不擅长的东西吧
------解决方案--------------------
用FTP

有很多FTP工具呀
------解决方案--------------------
学习了,我也想知道
------解决方案--------------------
Applet或者其他的,总之,最好的还是FTP。
哪怕是网页,也是嵌入FTP的客户端插件。
想办法实现吧。