【问题标题】:Downloading file from multiple sources with HTML and JS使用 HTML 和 JS 从多个来源下载文件
【发布时间】:2015-11-30 16:58:26
【问题描述】:

假设我有一大群服务器。就像我想要的一样多,所以原则上我可以提供巨大的总带宽。但是,每当用户想要下载文件时,如果我只是选择我的一台服务器作为下载源,下载将需要很长时间。

所以我想知道是否存在使浏览器同时从多个来源下载的解决方案。请注意,每个源都可以是标准 http 服务器上的标准文件。如果确实存在这样的解决方案,那就太好了,因为我可以给客户端一个我的服务器的小列表,客户端会根据需要同时从其中多个服务器下载。有可能做这样的事情吗?

我对任何不需要用户特定权限的解决方案持开放态度(即,无需安装扩展程序或插件),并且尽可能跨浏览器。我对非常小的下载限制也不是很满意。 Javascript绝对是一种选择。

我认为我可以使用 javascript 以块的形式下载文件,然后将它们合并成一个 blob 并让用户下载 blob。但是,这意味着我的文件可以只有一个 blob 一样大,即在 Chrome 上为 500 MB,在其他几个浏览器上稍大一些。所以还不够。还有其他解决方案吗?有可以用的js库吗?

【问题讨论】:

  • 这是您正在寻找的纯客户端解决方案,还是您也拥有服务器?如果您这样做,是部分所有权,如 GoDaddy 或 Azure Web,还是完全所有权,如您建筑物中的 VM 或服务器盒?
  • 是的,我拥有所有服务器的完全所有权。我对所有这些都具有完全的 root 访问权限。
  • 而且浏览器不一定必须能够显示文件 - 它可以立即重新路由到下载文件夹,就像浏览器无法显示文件时发生的情况一样?
  • 是的,完全正确。这样也好!
  • @Compynerd255 你有什么想法吗?

标签: javascript html http download


【解决方案1】:

使用Network Address Translation

这是一种可以在路由器上设置的功能,它允许多个服务器都注册到同一个 IP 地址 - 本质上,路由器使用单个地址连接到公共地址空间,并且您的所有服务器都连接到它。然后,路由器可以将单个请求转发到无事可做的任何服务器(在路由器中进行跟踪),然后转发回发出请求的计算机。

如果您发现您的路由器变得过多,您可以像这样构建另一个设置并将其放置在不同的物理位置,并注册到相同的域名。然后,您的客户端将连接到更近的路由器。要在一栋建筑物中快速完成此操作,只需将一台路由器连接到您所在地区的每个主要 ISP。

对于大文件,HTTP 支持chunked transfer,允许以多个较小的块下载文件或网页。多个服务器可能会自愿发送不同的块,允许您并行下载大页面。

【讨论】:

  • 等等,我确实可以访问所有这些,但我无法将它们全部放在同一个 ip 后面:每个 ip 都给定了,而且它们都不同..跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多