当前位置:编程学习 > JAVA >>

java 大文件上传

最近需要做一个资源平台,基于web形式,需要上传大文件,格式很多种,主要是文件都比较大(500M以上的)。类似电影,应用软件。

我使用的是struts2 +spring+hibernate技术,先前使用的是struts2的文件上传fileUpload,重新设置上传大小,可以实现大文件上传 ,但是速度较慢,担心网络不好的地方,会出错误,也曾想过给每个用户开一个ftp,让他们每个人先上传自己的资源,而后在需要上传资源的地方,书写自己文件的名称,我后台去查找,验证资源是否上传了,已上传就保存,未找到资源让用户的ftp帐户自己先去上传资源。

请高人给点意见,是否有其他好的解决方法?列如是否有成熟控件可以使用,或是其他的,谢谢大家! --------------------编程问答-------------------- 每天发言就有10个可用分 --------------------编程问答-------------------- 解决这种大文件上传不太可能用web上传的方式,只有自己开发插件或是当门客户端上传,或者用现有的ftp等。
1)开发一个web插件。用于上传文件。
2)开发一个FTP工具,不用web上传。
3)用现有的FTP工具。 --------------------编程问答-------------------- 能介绍一个插件吗?我去网上看的MUPLOAD大文件上传不知道好用不,有别的插件吗? --------------------编程问答-------------------- 大文件传输不可能使用http协议来搞定。
你恐怕需要自己编写一个applet或者ActiveX使用ftp或者自定义协议来解决这个传输问题。
如果你采用现在的解决方案。并发20个左右的大文件传输。服务器就会宕掉。
建议你使用activex+ftp来搞定它,如果不熟悉就用applet也可以。需要花点时间的也就是研究ftp协议。 --------------------编程问答-------------------- 仔细检查啊!! --------------------编程问答-------------------- --------------------编程问答-------------------- 针对你这个问题,我想我这个回答能帮助你!我们当时项目也遇到了这个问题。我给你介绍个插件把!Jquery的uploadify插件。你可以用用看。感觉效果不错。具体使用。你可以看帮助文档。若还不会可以请教我。但前提必须把分先给了再说。 --------------------编程问答--------------------
引用 7 楼 taiyangzhizi 的回复:
针对你这个问题,我想我这个回答能帮助你!我们当时项目也遇到了这个问题。我给你介绍个插件把!Jquery的uploadify插件。你可以用用看。感觉效果不错。具体使用。你可以看帮助文档。若还不会可以请教我。但前提必须把分先给了再说。

有这样的,这招绝 --------------------编程问答-------------------- 楼上介绍的jquery-uolodyify ,我下了一个版本进行了一个小测试,感觉还行,主要是没在大项目中用过,不知道性能如何,稳定性怎么样?楼上的能给点意见吗?你在你的项目中用的怎么样?如果不错的话,我也采用这种方式。
applet也是一种方式,MUPLOAD组件就是以APPLET方式处理的,但是我不是很喜欢java中的APPLET. --------------------编程问答-------------------- 使用applet吧,在里面还能使用压缩流,速度快一些。 --------------------编程问答-------------------- 一般实现大文件上传的话肯定是不能使用HTTP协议的,因为这样会给服务器带来巨大的压力。使用HTTP协议上传一个500MB大小的文件,意味着要占用WEB服务器500MB的内存,如果同时有许多人上传这么大的文件,WEB服务器的内存会被撑爆。FTP的方式比HTTP的方式要更适合大文件的传输,而且借助于FTP协议可以轻松实现文件的断点续传。

推荐使用:北京新颖网络FTP文件上传控件
详细介绍:http://www.cnblogs.com/xproer/archive/2010/04/17/1714073.html --------------------编程问答--------------------
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用楼主 hongshancha111 的回复:
最近需要做一个资源平台,基于web形式,需要上传大文件,格式很多种,主要是文件都比较大(500M以上的)。类似电影,应用软件。

我使用的是struts2 +spring+hibernate技术,先前使用的是struts2的文件上传fileUpload,重新设置上传大小,可以实现大文件上传 ,但是速度较慢,担心网络不好的地方,会出错误,也曾想过给每个用户开一个ftp,让他们每个人先上传自己的资……


楼上说的这些控件都跟SOCKET相关,单单WEB上传可靠性太低了。 --------------------编程问答-------------------- 大文件上传没有试过 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- ~~~~~
大文件上传?多大?大项目的话应该有专门的文件管理系统吧?小项目的话,你的硬盘空间够吗?会不会传一个文件就把空间占满?10 M 以内的文件用普通的上传不会有多大问题。 --------------------编程问答-------------------- 用FTP吧,速度效果都不错 --------------------编程问答-------------------- 是吗??我们积分了! --------------------编程问答-------------------- 用FTP吧,速度效果都不错 --------------------编程问答-------------------- 北京新颖网络FTP文件上传控件似乎不支持Google浏览器
我喜欢用Google浏览器
很多人喜欢用火狐,似乎都不支持吧? --------------------编程问答-------------------- 网上有一个Web大文件断点续传控件:http://www.cnblogs.com/xproer/archive/2012/02/17/2355440.html
此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。
文件MD5值计算进度:

文件MD5值计算完毕

服务器根据MD5检测是否存在相同文件

续传文件

从服务器加载文件列表

文件上传中

文件上传完毕

上传文件夹

与Discuz!X2整合-后台安装断点续传控件

与Discuz!X2整合-后台启用断点续传控件

与Discuz!X2整合-后台断点续传控件启用成功

与Discuz!X2整合-前台发帖页面

与Discuz!X2整合-上传

--------------------编程问答--------------------
引用 25 楼  的回复:
Xproer.HttpUploader4:http://www.cnblogs.com/xproer/archive/2012/02/17/2355440.html
此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。
文件MD5值计算进度:

文件MD5值计算完毕

服务器根据MD5检测是否存在相同文件

续传文件

从服务器加载文件列表

文件上传中

文件上传完毕

上传文件夹

与Discuz!X2整合-后台安装断点续传控件

与Discuz!X2整合-后台启用断点续传控件

与Discuz!X2整合-后台断点续传控件启用成功

与Discuz!X2整合-前台发帖页面

与Discuz!X2整合-上传

这个不错,我们公司几个内部系统都是用的这个控件。整合比较简单。难得可贵的是他们提供了许多已经整合好的示例,比如JSP和MySQL。我们的系统就是用的MySQL数据库。 --------------------编程问答-------------------- 这个插件是收费的啊,好几千,好几万大洋呢 --------------------编程问答--------------------
引用 27 楼  的回复:
这个插件是收费的啊,好几千,好几万大洋呢

话说我们公司上个星期刚刚购买了这个控件。让开发人员搞,哪天开发人员离职了就没人管了。还不如直接买成熟的东西,这样技术支持也到位,别人已经把开发文档写好了,这样我们的技术人员就能够把更多的精力放在自已的业务开发这块。 --------------------编程问答-------------------- uplodify,可以显示上传进度。大文件本来就传得慢,这个没啥解决的。。 --------------------编程问答-------------------- 找了半天都是这种决绝办法,还是继续试验吧! --------------------编程问答-------------------- 唉 怎么就没有免费的呢
--------------------编程问答-------------------- 目前正遇到这方面的需求.....不知道大文件有什么好的控件呢? --------------------编程问答--------------------
这个免费,去下载资源就能用了 --------------------编程问答-------------------- 楼主,我把我的经验告诉你吧。
上个月公司要求我们部门做一个文件上传的功能,文件的大小一般是高于1G。与你说的500M差不多,如果文件大,HTTP上传不给力,掉线又得重传,所以必须要能断点上传才行。
基于BS架构的HTTP请求协议是不可能能实现断点续传的,所以要使用其他协议来进行。

推荐你看下JavaUploader免费开源的,是用applet实现的,需要签名才能在浏览器上用,支持断点。
--------------------编程问答-------------------- 如果你不需要访问用户的硬盘文件,那你可以使用FTP上传,也支持断点。但只要你访问用户磁盘,又要支持断点,那必须要签名的。不然浏览器不知道你的身份。 --------------------编程问答--------------------
引用 33 楼 s478853630 的回复:

这个免费,去下载资源就能用了
这个免费的你给个名字啊 --------------------编程问答-------------------- uploadify只是一般的上传插件……关键还是要靠后台……单靠web确实不行! --------------------编程问答-------------------- Stream 上传插件(www.twinkling.cn)就是解决这种大文件上传的WEB插件。有JAVA版本的后台实现!
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,