13

Internet Explorer 的文件下载限制为 4GB(IE6 为 2GB)。Firefox 没有这个问题(还没有测试过 safari)(更多信息在这里:http: //support.microsoft.com/kb/298618

我正在开发一个允许用户下载非常大的文件(最大和超过 100GB)的网站

不使用 FTP的最佳方法是什么。最终用户必须能够使用 HTTP 从浏览器下载文件。我不认为 Flash 或 Silverlight 可以将文件保存到客户端,所以据我所知他们不会剪切它。

我猜我们将需要一个 ActiveX 或 Java 小程序来实现这一点。类似于 MSDN 使用的下载管理器。

有谁知道可以做到这一点的商业(或免费)组件?我们不希望用户必须安装“浏览器范围”的下载管理器(如 GetRight),我们希望它只能在我们的网站上下载。

更新:这里有一些额外的信息来帮助澄清我正在尝试做的事情。大多数超过 4GB 限制的文件都是大型高清视频文件(它适用于视频编辑公司)。这些将由互联网上的用户下载,这不会是本地网络上的人。我们希望这些文件可以通过 HTTP 访问(一些用户将位于不允许 FTP、Bittorrent 等的防火墙后面)。这将是最终用户可以下载的文件库,因此我们不是在谈论一次性大下载。将半定期下载不同的大文件。

到目前为止,@Edmund-Tay 建议的 Vault 是最接近的解决方案。唯一的问题是它不适用于大于 4GB 的文件(它在开始下载之前立即失败,它们可能在某处使用了一个 32 位整数,该文件的内容长度超出/溢出)。

最好的解决方案是 java applet 或 ActiveX 组件,因为该问题仅存在于 IE 中,其工作方式类似于链接到的文章 @spoulson。但是,到目前为止,我还没有找到可以执行类似操作(多部分下载、恢复等)的解决方案。

看起来我们可能不得不自己写。另一种选择是编写与扩展或 mime 类型相关联的 .Net 应用程序(可能是 ClickOnce)。然后用户实际上会从 web 服务器下载一个小文件,该文件在 exe/ClickOnce 应用程序中打开,告诉应用程序要下载什么文件。这就是 MSDN 下载器的工作原理。然后,最终用户只需下载/安装一次 EXE。这比每次他们想下载一个大文件时都下载一个 exe 更好。

4

15 回答 15

7

@levand:

作为用户,在这些情况下,我的实际偏好是下载一个轻量级的 .exe 文件,该文件会为您下载文件。

这对很多很多网站来说都是一个破坏者。用户要么非常不愿意从网站下载 .exe 文件,要么情愿地运行它们。即使他们并不总是那么谨慎,粗心的行为也不是我们作为负责任的开发人员应该鼓励的事情。

如果您正在从事类似于公司内部网的工作,.exe 可能是一个不错的解决方案,但对于公共网络呢?没门。

@TonyB:

不使用 FTP 的最佳方法是什么。

对不起,但我不得不问为什么要求。你的问题对我来说是这样的:“在没有任何肉或热源的情况下烹饪牛排的最佳方法是什么?” FTP 就是为这类事情而设计的。

于 2008-08-29T20:59:55.170 回答
6

比特流

已经有一些基于 Web 的版本(bitletw3btorrent),并且Azureus是使用 java 构建的,所以这绝对是可能的。

编辑:@TonyB 是否仅限于端口 80?

于 2008-08-29T20:35:39.220 回答
4

请不要使用 ActiveX... 我厌倦了只能在 IE 中查看的网站。

作为用户,在这些情况下,我的实际偏好是下载一个轻量级的 .exe 文件,该文件会为您下载文件。

于 2008-08-29T20:38:09.060 回答
2

您可以将文件分成几部分,然后在下载后重新加入它们吗?

于 2008-08-29T20:41:19.753 回答
1

一些想法:

  • 暴雪为他们的补丁使用了一个轻量级的 .exe BitTorrent 包装器。我不完全确定它是如何完成的,但它看起来像是官方 BitTorrent 客户端的品牌版本。
  • 上传到 Amazon S3,提供文件的 torrent 链接(所有 S3 文件都自动启用 BitTorrent),加上完整的 HTTP 下载链接作为替代。 请参阅 S3 文档
于 2008-09-03T17:54:33.590 回答
1

如果您不想在内部编写 java 代码,可以使用商业小程序解决方案:

它们都有 eval 版本,您可以下载和测试。

于 2008-08-30T02:28:23.757 回答
1

怎么说“我们建议您安装免费下载管理器来下载此文件。您将获得能够恢复文件并加速下载的额外好处。”

就个人而言,我从不使用内置的浏览器下载工具下载任何东西,除非我必须这样做(例如 Gmail 附件)

于 2009-01-28T14:05:34.047 回答
0

有些用户将在不允许 FTP 的公司防火墙后面...

具有限制性防火墙的用户是否可能被允许从您的网站安装和运行 .exe 文件?

于 2008-09-03T17:36:04.103 回答
0

看看卷曲本文介绍如何通过 HTTP 进行多部分同时下载。我过去使用 cURL 来管理超过 300GB 文件的 FTP 下载。

另一个提示:如果您在客户端的 NIC 配置上增加 TCP 窗口的大小,您可以进一步延长下载时间。将其设置为操作系统允许的最高值,您应该会看到最多 2 倍的改进,具体取决于您的物理网络。当通过 WAN 进行 FTP 传输时,这对我在 Windows 2000 和 2003 上有效。不利的一面是它可能会增加所有其他网络流量的开销,这些流量只需要几个 KB 的网络数据包,但现在被迫以 64KB 数据包发送/接收。你的旅费可能会改变。

编辑:你想要完成的究竟是什么?观众是谁?我假设您希望通过自己的网络执行此操作;但您似乎暗示客户端是互联网上的某个人。我认为我们需要更明确的要求。

于 2008-09-03T18:00:40.190 回答
0

@特拉维斯

不幸的是,它必须在用户浏览器中通过 HTTP。我将更新问题以更清楚地说明这一点。

于 2008-08-29T20:38:29.200 回答
0

@levand 这个问题只存在于 IE 中(它适用于 Firefox),所以虽然 ActiveX 只适用于 IE,但 IE 是我们唯一需要解决的问题。

@travis - 有趣的想法。不确定它是否能满足我的需要,但我会记住它。我希望找到与现有网站集成的东西,而不必去找第三方。它还需要我设置一个 bittorrent 跟踪器,这对于这个应用程序来说并不像听起来那么容易,因为不同的用户对不同的文件有不同的访问权限。

于 2008-08-29T20:50:19.140 回答
0

@jjnguy 我正在寻找可以为我执行此操作的 java 小程序或 ActiveX 组件。这些是非技术用户,所以我们真的只想让他们点击下载,完整的文件最终在指定的位置

于 2008-08-29T20:57:10.947 回答
0

@ceejayoz

我完全同意,但这是我们客户要求的一部分。将有 FTP 访问,但每个用户都可以选择通过 HTTP 或 FTP 下载。有些用户将在不允许 FTP 的公司防火墙后面

我过去曾见过其他网站(MSDN、Adobe)这样做,所以我希望那里已经有一些东西,而不是必须在内部制作一个(并学习 java 和/或 ActiveX)

于 2008-08-29T21:03:34.473 回答
0

我说单击一次安装的下载管理器,类似于 msdn。

但是,在没有针对这项工作的更优化协议的情况下成为 CDN 并非易事。我无法想象一个商业模式值得拥有如此大的文件下载作为核心竞争力,除非你正在做类似 msdn 的事情。如果你创建了一个胖客户端,你至少有机会与用户面对面交流,用于广告或其他一些收入模式,因为你可能会支付数十万美元来托管这样的服务。

于 2008-08-29T21:07:34.747 回答
0

提到的小程序方法的问题是,除非您让最终用户修改他们的 java 安全属性,否则您的小程序将无权保存到硬盘驱动器。

可以使用Java Web Start(又名 JNLP)。我认为如果它是一个签名的应用程序,它可以获得额外的写入硬盘的权限。这和下载一个exe的方式没有太大区别。这样做的问题是用户必须安装正确的 Java 版本,并且必须正确设置 Java Web Start 功能。

我会推荐 exe 方法,因为它对于非技术用户来说是最容易使用的。

于 2008-08-30T00:12:05.363 回答