大文件下载
Internet Explorer的文件下载限制为4GB(IE6上为2 GB)。 Firefox没有这个问题(尚未测试野生动物园)
(此处提供更多信息:http://support.microsoft.com/kb/298618)
我正在一个允许用户下载非常大的文件(最大和超过100GB)的网站上工作
不使用FTP的最佳方法是什么?最终用户必须能够使用HTTP从那里的浏览器下载文件。我认为Flash或者Silverlight无法将文件保存到客户端,据我所知它们不会剪切文件。
我猜想我们将需要一个ActiveX或者Java小程序来实现这一目标。类似于MSDN使用的下载管理器。
有谁知道可以做到这一点的商业(或者免费)组件?我们不希望用户必须安装"浏览器范围内的"下载管理器(例如GetRight),我们希望它只能在我们的网站上进行下载。
更新:这是一些其他信息,以帮助阐明我正在尝试做的事情。超过4GB限制的大多数文件都是大型高清视频文件(适用于视频编辑公司)。这些将由用户通过Internet下载,而不再是本地网络上的用户。我们希望这些文件可以通过HTTP使用(某些用户将位于不允许FTP,Bittorrent等的防火墙之后)。它将是最终用户可以下载的文件的库,因此我们不是在谈论一次大型下载。将会半定期下载不同的大文件。
到目前为止,@ Edmund-Tay建议的Vault是迄今为止最接近的解决方案。唯一的问题是,它不适用于大于4GB的文件(在开始下载之前,它立即失败,它们可能在文件内容长度超过某个地方使用32位整数)。
像链接到@spoulson的文章一样工作的java applet(或者ActiveX组件,因为该问题仅在IE中存在)是最好的解决方案,但是到目前为止,我还没有运气找到能做到这一点的东西(多部分下载) ,简历等)。
看来我们可能不得不编写我们自己的。另一种选择是编写与扩展名或者mime类型关联的.Net应用程序(可能是ClickOnce)。然后,用户实际上是从exe / ClickOnce应用程序中打开的Web服务器下载一个小文件,告诉该应用程序要下载什么文件。这就是MSDN下载器的工作方式。最终用户将只需要下载/安装一次EXE。这比每次他们要下载大文件时都下载一个exe更好。
解决方案
回答
比特洪流?
已经有一些基于Web的版本(bitlet,w3btorrent),Azureus是使用Java构建的,因此绝对有可能。
编辑:@TonyB是否仅限于端口80?
回答
请不要使用ActiveX ...我很讨厌只能在IE中查看的网站。
在这种情况下,作为用户,我的实际偏爱是下载一个轻量级的.exe文件,该文件将为我们下载。
回答
@travis
不幸的是,它必须通过用户浏览器中的HTTP。
我将更新问题以使其更清楚。
回答
我们可以将文件拆分成多个部分,然后在下载后重新加入它们吗?
回答
@levand
该问题仅在IE中存在(它在Firefox中有效),因此ActiveX仅可在IE上运行,而IE是我们唯一需要解决的问题。
@travis有趣的主意。不知道它是否可以满足我的需要,但我会牢记在心。我希望找到可以与现有网站集成的东西,而不必去找第三方。它还需要我设置一个bittorrent跟踪器,它对这个应用程序来说听起来并不容易,因为不同的用户对不同的文件具有不同的访问权限。
回答
@jjnguy
我正在寻找可以为我做的Java小程序或者ActiveX组件。这些是非技术用户,因此我们只希望让他们单击下载,然后将完整文件保存在指定位置
回答
@levand:
My actual preference, as a user, in these situations is to download a lightweight .exe file that downloads the file for you.
对于许多网站而言,这是一个大问题。用户或者或者应该非常不愿意从网站下载.exe文件,然后随意地运行它们。即使他们并不总是那么谨慎,谨慎行为也不是我们作为负责任的开发人员应鼓励的事情。
如果我们正在按照公司Intranet的方式工作,那么.exe可能是一个不错的解决方案,但是对于公共Web而言?决不。
@TonyB:
What is the best way to do this without using FTP.
抱歉,我必须问为什么要这样做。问题让我读到"什么是没有肉或者没有热源的牛排的最佳制作方法?" FTP是为这种事情而设计的。
回答
@ceejayoz
我完全同意,但这是我们客户要求的一部分。可以进行FTP访问,但是每个用户都可以选择通过HTTP或者FTP下载。有些用户将位于公司防火墙的后面,这些用户不允许使用FTP
我过去曾见过其他站点(MSDN,Adobe)这样做,所以我希望已经有了一些东西,而不必自己做(学习Java和/或者ActiveX)
回答
我说的是单击一次安装的下载管理器,类似于msdn。
但是,要在没有针对该工作的更优化协议的情况下成为CDN并非易事。我无法想象有一种商业模式值得拥有,足以将如此大的文件下载作为核心能力,除非我们正在执行msdn之类的工作。如果创建一个胖客户端,则至少有机会与用户进行广告或者其他收益模式的交流,因为我们可能会花费数十万美元来托管这样的服务。
回答
提到的applet方法的问题在于,除非最终用户修改其java安全属性,否则applet将无权保存到硬盘驱动器。
使用Java Web Start(又名JNLP)可能是可能的。我认为,如果它是已签名的应用程序,则可以获取写入硬盘的额外权限。这与下载exe方法没有太大不同。问题是用户必须安装正确版本的Java,并且必须正确设置Java Web Start功能。
我建议使用exe方法,因为它是非技术用户最容易使用的方法。
回答
如果我们不想内部编写Java代码,则可以使用商业applet解决方案:
- 金库
- MyDownloder
它们都有评估版本,我们可以下载和测试。
回答
There are some users that will be behind corporate firewalls that don't permit FTP...
是否拥有类似限制性防火墙的用户是否可能被允许从网站安装并运行.exe文件?
回答
一些想法:
- 暴雪为其补丁程序使用了轻量级的.exe BitTorrent包装器。我并不完全确定它是如何完成的,但它看起来像是官方BitTorrent客户端的品牌版本。
- 上传到Amazon S3,提供文件的种子链接(所有S3文件均自动启用BitTorrent),以及完整的HTTP下载链接作为替代。请参阅S3文档
回答
看一下cURL。本文介绍如何通过HTTP进行多部分同时下载。我过去曾使用cURL管理超过300GB的文件的FTP下载。
另一个提示:如果增加客户端NIC配置上的TCP Window的大小,则可以进一步增加下载时间。将其设置为操作系统允许的最高值,根据物理网络,我们应该看到最多2倍的改进。当通过WAN进行FTP传输时,这在Windows 2000和2003上对我有用。不利的一面是,它可能会增加所有其他网络流量的开销,这些流量只需要一个网络数据包几个KB,但是现在被迫以64KB数据包发送/接收。你的旅费可能会改变。
编辑:这正是我们要完成的工作?谁是观众?我假设我们正在寻求通过自己的网络进行此操作;但我们似乎暗示客户端是互联网上的某人。我认为我们需要更明确的要求。
回答
怎么说:"我们建议我们安装免费下载管理器以下载此文件。我们将获得能够恢复文件并加快下载速度的额外好处。"
就个人而言,除非有必要,否则我绝不会使用内置的浏览器下载工具下载任何内容(例如Gmail附件)