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或ActiveX组件,因为这个问题只存在于IE中,就像@spoulson链接的文章一样。但是,到目前为止,我还没有找到解决方案做任何事情(多部分下载,简历等)。
看起来我们可能要写自己的。另一种选择是编写与扩展或mime类型相关联的.Net应用程序(可能是ClickOnce)。然后,用户实际上将从exe / ClickOnce应用程序中打开的Web服务器下载一个小文件,该应用程序告诉应用程序要下载哪个文件。这就是MSDN下载器的工作原理。然后,最终用户只需下载/安装一次EXE。这比每次下载大文件时下载exe都要好。
答案 0 :(得分:7)
@levand:
在这些情况下,作为用户,我的实际偏好是下载一个轻量级的.exe文件,为您下载该文件。
这对很多很多网站来说都是一个破坏者。用户或者应该非常不愿意从网站下载.exe文件并且不知不觉地运行它们。即使他们并不总是那么谨慎,但我们应该鼓励作为负责任的开发人员,不谨慎的行为 。
如果您正在处理公司内部网的某些事情,那么.exe可能是一个好的解决方案,但对于公共网络?没办法。
@TonyB:
不使用FTP,最好的方法是什么。
对不起,但我不得不问为什么要求。你的问题告诉我的是“在没有任何肉类或热源的情况下煮牛排的最佳方法是什么?”对于这类事情,FTP是设计的。
答案 1 :(得分:6)
答案 2 :(得分:4)
请不要使用ActiveX ...我对那些只能在IE中查看的网站感到厌烦。
在这些情况下,作为用户,我的实际偏好是下载一个轻量级的.exe文件,为您下载该文件。
答案 3 :(得分:2)
您可以将文件拆分成碎片,然后在下载后重新加入吗?
答案 4 :(得分:1)
答案 5 :(得分:1)
一些想法:
答案 6 :(得分:1)
如何说“我们建议您安装Free Download Manager以下载此文件。您可以享受恢复文件和加速下载的额外好处。”
我个人不会使用内置的浏览器下载工具下载任何内容,除非我必须(例如Gmail附件)
答案 7 :(得分:0)
@travis
不幸的是,它必须在用户浏览器中通过HTTP。 我会更新问题,以便更清楚。
答案 8 :(得分:0)
@levand 这个问题只存在于IE中(它适用于Firefox),因此虽然ActiveX只适用于IE,但IE是我们唯一需要解决的问题。
@travis - 有趣的想法。不确定它是否适用于我需要的东西,但我会记住它。我希望能找到与现有网站集成的东西,而不必去第三方。它还需要我设置一个bittorrent跟踪器,这对于这个应用程序来说不会像听起来那么容易,因为不同的用户将拥有对不同文件的不同访问权。
答案 9 :(得分:0)
@jjnguy 我正在寻找一个java applet或ActiveX组件,它将为我做这件事。这些是非技术用户,所以我们真的只想让他们点击下载,完整的文件最终会在指定的位置
答案 10 :(得分:0)
@ceejayoz
我完全同意,但它是我们客户要求的一部分。将有FTP访问,但每个用户可以选择通过HTTP或FTP下载。有些用户将支持不允许使用FTP的企业防火墙
我见过其他网站过去(MSDN,Adobe),所以我希望有一些东西已经存在,而不是必须在内部制作(并学习java和/或ActiveX)
答案 11 :(得分:0)
我说click-once安装的下载管理器,类似于msdn。
但是,如果没有更优化的协议来成为CDN并非易事。我无法想象一个商业模式,除非你做像msdn这样的事情,否则有足够的商业模式可以将这么大的文件下载作为核心竞争力。如果您创建一个胖客户端,您至少有机会与用户,广告或其他一些收入模式获得更多的面对面时间,因为您可能需要支付数十万美元才能托管此类服务。
答案 12 :(得分:0)
提到的applet方法的问题在于,除非您让最终用户修改其java安全属性,否则您的applet将无权保存到硬盘驱动器。
可以使用Java Web Start(又名JNLP)。我认为,如果它是一个已签名的应用程序,它可以获得写入硬盘驱动器的额外权限。这与下载exe方法没有太大区别。这样做的问题是用户必须安装正确版本的Java并且必须正确设置Java Web Start功能。
我建议使用exe方法,因为这对非技术用户来说是最容易使用的。
答案 13 :(得分:0)
有些用户将在不允许FTP的公司防火墙后面......
具有限制性防火墙的用户是否可能被允许从您的网站安装和运行.exe文件?
答案 14 :(得分:0)
看看cURL。 This article描述了如何通过HTTP进行多部分同时下载。我过去曾使用过cURL来管理超过300GB的文件的FTP下载。
另一个提示:如果在客户端的NIC配置上增加TCP窗口的大小,则可以进一步提高下载时间。将其设置为操作系统允许的最高值,您应该看到最多2倍的改进,具体取决于您的物理网络。当通过WAN进行FTP时,这适用于Windows 2000和2003。不利的一面是,它可能会增加网络数据包只需几KB的所有其他网络流量的开销,但现在被迫以64KB数据包发送/接收。您的里程可能会有所不同。
编辑:你究竟想要完成的是什么?谁是观众?我有点想你想在你自己的网络上做这件事;但你似乎暗示客户端是互联网上的某个人。我认为我们需要更清晰的要求。