我正在用java编写一个web服务器,它正在传输高达2GB的文件.当我搜索原因时,我发现java HttpServelet只允许我们将内容长度设置为int.由于整数的最大大小为2GB,因此当我使用response.setContentLength方法时,它的工作正常可达2gb.现在的问题是默认的response.setContentLength有整数参数.所以它没有把长值作为参数.我已经尝试过response.setHeader("Content-Length",Long.toString(f.length())); response.addHeader("Content-Length",Long.toString(f.length())); 但没有任何工作.总是在长值时无法添加内容长度.所以请为HTTPServletResponse提供任何有效的解决方案,以便我可以将内容长度设置为long值.
Internet Explorer的文件下载限制为4GB(IE6上为2 GB).Firefox没有这个问题(还没有测试过safari)(更多信息请访问:http://support.microsoft.com/kb/298618)
我正在开发一个网站,允许用户下载非常大的文件(最大和超过100GB)
不使用FTP,最好的方法是什么.最终用户必须能够使用HTTP从浏览器下载文件.我不认为Flash或Silverlight可以将文件保存到客户端,因为据我所知他们不会削减它.
我猜我们需要一个ActiveX或Java applet来解决这个问题.类似于MSDN使用的下载管理器.
有没有人知道这样做的商业(或免费)组件?我们不希望用户必须安装"浏览器范围"的下载管理器(如GetRight),我们希望它只能在我们的网站上下载.
更新:这里有一些额外的信息,以帮助澄清我正在尝试做什么.大多数4GB限制以上的文件都是大型高清视频文件(适用于视频编辑公司).这些将由用户通过互联网下载,这不会是本地网络上的人.我们希望文件可以通过HTTP获得(一些用户将会在防火墙之后,不允许使用FTP,Bittorrent等).这将是最终用户可以下载的文件库,因此我们不是在谈论一次性的大型下载.将定期下载不同的大型文件.
到目前为止,@ Edmund-Tay建议的Vault是迄今为止最接近的解决方案.唯一的问题是它不适用于大于4GB的文件(它在开始下载之前立即失败,它们可能在文件内容长度超过的某处使用32位整数).
一个java applet(或者因为问题只存在于IE中的ActiveX组件)就像@spoulson链接的文章一样,是最好的解决方案,但到目前为止,我还没有找到任何可以做到这一点的运气(多部分下载) ,简历等).
看起来我们可能要写自己的.另一种选择是编写与扩展或mime类型相关联的.Net应用程序(可能是ClickOnce).然后,用户实际上将从exe/ClickOnce应用程序中打开的Web服务器下载一个小文件,该应用程序告诉应用程序要下载哪个文件.这就是MSDN下载器的工作原理.然后,最终用户只需下载/安装一次EXE.这比每次下载大文件时下载exe都要好.