通过html格式上传大文件(超过2 GB)

Nad*_*lah 38 html file-upload http large-files

有没有上传超过2 GB的文件,使用简单的html表单上传?以前我一直在使用分块通过silverlight上传大文件(将一个大文件分成多个段然后逐个上传段然后在服务器上重新组合段).

现在,我们要求我们只需要使用简单的html(尽管是GWT)表单上传.如果有任何方法可以通过这种方式实现大文件上传,请指导我.

如果使用简单的html无法做到这一点,那么有人可以指导我如何使用flex分段和上传文件吗?

Kon*_*aju 40

使用HTML5 File API上传大文件.它具有切片的概念,因此您可以上传大文件.

var reader= new FileReader();
reader.onload=function(e){

//do whatever you want with result
}
var blob = file.slice(startingByte, endindByte);//slicing file
reader.readAsBinaryString(blob);
Run Code Online (Sandbox Code Playgroud)

文件系统教程

文件API教程

  • 看起来相关的[API死了](https://lists.w3.org/Archives/Public/public-webapps/2014AprJun/0010.html)并且不再由W3C考虑. (4认同)
  • 据我所知 FileReaderApi 根本没有死。所有现代浏览器都支持它!理论上没有大小限制,因为该解决方案适用于块。 (3认同)

Bal*_*usC 39

HTTP POST请求大小的限制通常不在HTML方面.服务器端的限制更多.需要将Web服务器配置为接受大型POST请求.默认值通常通常为2GB,服务器通常会返回HTTP 500错误.默认限制通常可以增加到4GB,但除此之外的任何内容都将达到32位系统的边界.在具有64位OS的64位系统上,理论边界要高得多,16EB.

如果将Web服务器配置为接受大的POST请求不是一个选项,或者当您想要超出Web服务器的限制时,那么除了在客户端分割文件并重新组装服务器端的部件之外别无选择.

由于HTML只是一种标记语言,因此它不提供拆分文件的工具.你必须使用像C#(Silverlight)或Java(Applet)这样的普通编程语言来处理你的网页提供的小应用程序的风格.非常可能也可以使用Flash或Flex,但不要因为我不这样做而把我钉在上面.

说,FTP是比HTTP通过网络传输(大)文件更好的选择.我会重新考虑使用HTTP的选择.

  • 感谢BalusC,我们可以将服务器限制增加到4GB,但IE和FF不支持发送大于2GB的文件.我会寻找flash/flex来破坏文件或压缩它,然后再上传.谢谢,Nadeem (2认同)