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

超大文件上传(10G)

最近在做javaweb的超大文件上传,基本要实现10G以上的文件的需求,本人初学,请各位大侠指点一二。 --------------------编程问答-------------------- commons-upload --------------------编程问答-------------------- jspsmart.jar
commons-fileupload-1.2.2.jar




public class UploadServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String path = this.getServletContext().getRealPath("/")+"/upload";
File folder = new File(path);
if(!folder.exists())
folder.mkdirs();
String result = null;
long maxsize=20*1024*1024*1024;
try{
SmartUpload upfile=new SmartUpload();       //实例化对象 
upfile.initialize(this.getServletConfig(),request,response);     //执行初始化操作 
upfile.upload();                            //上传文件到服务器

Files file=upfile.getFiles();              // 获取文件组
if(file.getSize()>maxsize){                 //判断文件大小是否符合
result="太大了!";
}
com.jspsmart.upload.File files=file.getFile(0);                  //实例化文件对象

if((!files.isMissing())&&(file.getSize()<maxsize)){
String fname=files.getFileName();       //获取文件名 
//String s= URLEncoder.encode(fname,"utf-8");
upfile.save("/upload/");                //保存上传的文件
result="上传成功!";
}
}
catch(Exception e){
e.printStackTrace();
}
//将信息发送到指定页面 
request.setAttribute("result", result);
RequestDispatcher rd=request.getRequestDispatcher("secc.jsp");
rd.forward(request, response);
}
public void init(ServletConfig config) throws ServletException {
super.init(config);
}

}


web.xml

  <servlet>
    <servlet-name>UploadServlet</servlet-name>
    <servlet-class>xx.UploadServlet</servlet-class>
  </servlet>


  
  <servlet-mapping>
    <servlet-name>UploadServlet</servlet-name>
    <url-pattern>/UploadServlet</url-pattern>
  </servlet-mapping>


页面

<form method="post" action="UploadServlet" enctype="multipart/form-data">
    
     <tr>
     <td align="center"> <input type="file" name="file1" size="50"></td>
    </tr>
    <tr>
     <td align="center"> <input type="submit" value="开始上传"></td>
    
    </tr>
    </form>
--------------------编程问答-------------------- 不太懂这个~~ --------------------编程问答-------------------- --------------------编程问答-------------------- 10G的大文件。
我建议使用Web插件,开启多线程和断点续传功能。
否则很容易挂掉 --------------------编程问答-------------------- 这么大,要考虑的事情就太多啦,分块传送吧,每块设置10m这样,每块传送完毕,服务器成功就返回结果个客户端要求传下一块,如果不成功,上一块接着传送,写起来考虑的事情好多,块数 --------------------编程问答-------------------- 这个,还是用支持断点再传的ftp服务器比较稳妥。 --------------------编程问答--------------------
引用 2 楼 fangmingshijie 的回复:
jspsmart.jar
commons-fileupload-1.2.2.jar



Java code
?



1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697……


这个jspsmartupload不可用,因为他一般大于60M/70M就内存崩溃;

建议使用 commons_fileupload 这个是基于apach社区实现的,它上传的文件可以无限大;

--------------------编程问答-------------------- 断点续传!另外肯定需要划分成小的去上传 --------------------编程问答-------------------- 谢谢各位,在网上找了很久,也没怎么实现,有位大哥提供了一个,大概实现了一些3G,10G现在没有要求了, --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 楼主 zjk848689230 的回复:
最近在做javaweb的超大文件上传,基本要实现10G以上的文件的需求,本人初学,请各位大侠指点一二。
这个你得用控件来做。普通WEB是搞不定的,FLASH控件也搞不定。 --------------------编程问答--------------------
引用 楼主 zjk848689230 的回复:
最近在做javaweb的超大文件上传,基本要实现10G以上的文件的需求,本人初学,请各位大侠指点一二。
网上有一个Web超大文件上传断点续传控件:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html
此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。
支持浏览器:Internet Explorer 6,Internet Explorer 7,Internet Explorer 8,Internet Explorer 9
Maxthon(遨游)1.x,Maxthon(遨游)2.x,TT浏览器,QQ浏览器,360安全浏览器,
Chrome(Google浏览器),Maxthon3.x,360极速浏览器6.x,Firefox
粘贴文件,简化选择文件操作:

文件MD5值计算进度:

文件MD5值计算完毕

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

续传文件

从服务器加载文件列表

文件上传中

文件上传完毕

上传文件夹

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

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

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

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

与Discuz!X2整合-上传


页面调用示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>HTTP断点续传控件与MySQL数据库演示页面(UTF-8)</title>
    <link href="HttpUploader/HttpUploader.css" type="text/css" rel="Stylesheet"/>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/FileLister.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/HttpUploader.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/combinbox.js"></script>
    <script type="text/javascript" src="HttpUploader/jquery-1.3.2.min.js"></script>
    <script language="javascript" type="text/javascript">
     var cbItemLast = null;
     var cbMgr = new CombinBoxMgr();

     $(document).ready(function()
     {
     cbMgr.LoadInControl("FilePanel");
     cbMgr.Init();
     });
    </script>
</head>
<body>
<div id="FilePanel"></div>
</body>
</html>

资源下载:
cab安装包
crx安装包
xpi安装包
exe安装包
开发文档
升级日志 
ASP.NET(C#)示例代码:
ASP.NET-ACCESS示例
ASP.NET-SQL2005示例
JSP示例代码:
JSP-ACCESS-GB2312示例
JSP-ACCESS-UTF8示例
JSP-SqlServer2005-UTF8示例
JSP-MySQL-UTF8示例
PHP示例代码:
PHP-MySQL-UTF8示例
Chrome,Firefox,IE断点续传控件示例(以下示例已整合IE32,IE64,Firefox,Chrome平台的插件)
ASP.NET-ACCESS示例
ASP.NET-SQL2005示例
JSP示例代码:
JSP-ACCESS-GB2312示例
JSP-ACCESS-UTF8示例
JSP-SqlServer2005-UTF8示例
JSP-MySQL-UTF8示例
PHP示例代码:
PHP-MySQL-UTF8示例

Chrome,Firefox,IE断点续传控件示例(以下示例已整合IE(x86),IE(x64),Firefox,Chrome平台的插件)
ASP.NET-ACCESS示例
ASP.NET-SQL2005示例
JSP-ACCESS-GB2312示例
JSP-ACCESS-UTF8示例
JSP-SQL2005-UTF8示例
JSP-MySQL-UTF8示例
PHP-MySQL-UTF8示例
--------------------编程问答--------------------
引用 13 楼 cwhatiscs 的回复:
Xproer.HttpUploader5:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html
此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。
支持浏览器:Internet Explorer 6,Internet Explorer 7,Internet Explorer 8,Internet Explorer 9
Maxthon(遨游)1.x,Maxthon(遨游)2.x,TT浏览器,QQ浏览器,360安全浏览器,
Chrome(Google浏览器),Maxthon3.x,360极速浏览器6.x,Firefox

页面调用示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>HTTP断点续传控件与MySQL数据库演示页面(UTF-8)</title>
    <link href="HttpUploader/HttpUploader.css" type="text/css" rel="Stylesheet"/>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/FileLister.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/HttpUploader.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/combinbox.js"></script>
    <script type="text/javascript" src="HttpUploader/jquery-1.3.2.min.js"></script>
    <script language="javascript" type="text/javascript">
     var cbItemLast = null;
     var cbMgr = new CombinBoxMgr();

     $(document).ready(function()
     {
     cbMgr.LoadInControl("FilePanel");
     cbMgr.Init();
     });
    </script>
</head>
<body>
<div id="FilePanel"></div>
</body>
</html>

资源下载:
cab安装包
crx安装包
xpi安装包
exe安装包
开发文档
升级日志 
ASP.NET(C#)示例代码:
ASP.NET-ACCESS示例
ASP.NET-SQL2005示例
JSP示例代码:
JSP-ACCESS-GB2312示例
JSP-ACCESS-UTF8示例
JSP-SqlServer2005-UTF8示例
JSP-MySQL-UTF8示例
PHP示例代码:
PHP-MySQL-UTF8示例
Chrome,Firefox,IE断点续传控件示例(以下示例已整合IE32,IE64,Firefox,Chrome平台的插件)
ASP.NET-ACCESS示例
ASP.NET-SQL2005示例
JSP示例代码:
JSP-ACCESS-GB2312示例
JSP-ACCESS-UTF8示例
JSP-SqlServer2005-UTF8示例
JSP-MySQL-UTF8示例
PHP示例代码:
PHP-MySQL-UTF8示例

Chrome,Firefox,IE断点续传控件示例(以下示例已整合IE(x86),IE(x64),Firefox,Chrome平台的插件)
ASP.NET-ACCESS示例
ASP.NET-SQL2005示例
JSP-ACCESS-GB2312示例
JSP-ACCESS-UTF8示例
JSP-SQL2005-UTF8示例
JSP-MySQL-UTF8示例
PHP-MySQL-UTF8示例
这个不错。主流平台都支持了。现在公司正在做一个存储项目,正好需要这个控件。 --------------------编程问答-------------------- 普通HTML方式就别想的。网上发的代码都是服务端的实现方式。但是这些代码连50MB的文件都上传不了,更不用说10G了。

只能通过第三方的插件来做。比如QQ邮箱的大附件上传控件,115网盘,DBank(华为网盘),百度网盘,他们都是用控件来做的。 --------------------编程问答--------------------
引用 13 楼 cwhatiscs 的回复:
引用 楼主 zjk848689230 的回复:最近在做javaweb的超大文件上传,基本要实现10G以上的文件的需求,本人初学,请各位大侠指点一二。网上有一个Web超大文件上传断点续传控件:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html
此控件支持100G文件的断点续传操作,提供了完善的开发文档……


收藏了 --------------------编程问答--------------------
引用 13 楼 cwhatiscs 的回复:
引用 楼主 zjk848689230 的回复:最近在做javaweb的超大文件上传,基本要实现10G以上的文件的需求,本人初学,请各位大侠指点一二。网上有一个Web超大文件上传断点续传控件:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html
此控件支持100G文件的断点续传操作,提供了完善的开发文档……


马克,收藏了。 --------------------编程问答-------------------- 10G 的文件通过 HTTP 协议来上传???

我想知道什么文件能有 10G?里面都放了些啥? --------------------编程问答-------------------- 合适的工具做合适的事 --------------------编程问答--------------------
引用 19 楼 Inhibitory 的回复:
合适的工具做合适的事



引用 18 楼 bao110908 的回复:
10G 的文件通过 HTTP 协议来上传???

我想知道什么文件能有 10G?里面都放了些啥?


林子大了什么鸟都有 可能老板有A片在公司不好带到家吧,所有就上传到服务器,回家打开慢慢看 --------------------编程问答-------------------- 需求是千奇百怪的  mark.. --------------------编程问答--------------------
引用 7 楼 shine333 的回复:
这个,还是用支持断点再传的ftp服务器比较稳妥。

顶起哦 --------------------编程问答-------------------- mark. --------------------编程问答-------------------- 10G啊,你都传的啥啊
--------------------编程问答-------------------- 除 --------------------编程问答-------------------- 10G用http来传,这需求有点操蛋,如果是内网的话,直接ftp就完了,http太不稳定了。 --------------------编程问答-------------------- 可行的方法是把10G的文件切成10M的小文件,分别上传。
直接传10G肯定是不行的 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 不错         。       --------------------编程问答-------------------- 网上有一个Web超大文件上传断点续传控件:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html
此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。
支持浏览器:Internet Explorer 6,Internet Explorer 7,Internet Explorer 8,Internet Explorer 9
Maxthon(遨游)1.x,Maxthon(遨游)2.x,TT浏览器,QQ浏览器,360安全浏览器,
Chrome(Google浏览器),Maxthon3.x,360极速浏览器6.x,Firefox
粘贴文件,简化选择文件操作:

文件MD5值计算进度:

这个收费的吧? --------------------编程问答-------------------- 直接迅雷... --------------------编程问答-------------------- --------------------编程问答-------------------- 奇葩需求引围观~! --------------------编程问答-------------------- 10G  用文件上传  这想法就是错的  WEB或者说B/S是有一定局限的  它不适合做这个
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,