我正在开发一个文件上传系统,它将大文件的各个部分存储在多个服务器上。所以 1GB 文件的分布看起来像这样:
Server 1: 0-128MB
Server 2: 128MB-256MB
Server 2: 256MB-384MB
... etc
这样做的目的是考虑到冗余(每个部分将存在于不止一台服务器上)、安全性(没有一台服务器可以访问整个文件)和成本(分配带宽费用)。
我很好奇是否有人对我如何能够“欺骗”网络浏览器在一个链接中下载各个部分有意见。
我的想法是这样的:
- 浏览器链接到服务器 1,它提供完整文件的内容大小
- 一旦提供了 128MB,服务器 1 将有意关闭连接
- 希望浏览器会尝试重新开始下载,请求服务器 1
- 服务器 1 提供到服务器 2 的 3XX 重定向
- 浏览器继续从服务器 2 下载
我不确定我的示例是否有效,因为我尚未对其进行测试。我很好奇是否有人可能有其他解决方案?
我想让整个过程尽可能简单(理想情况下除了简单的下载外不需要任何工作)。我不希望用户必须使用另一个程序(即:将文件放在一起)。我也不想使用代理服务器,因为它会产生额外的带宽成本。
据我所知,没有用于编写文件的 javascript 解决方案,如果有的话,那就太好了。
最佳答案
据我所知,使用 HTTP 协议(protocol)是不可能的。您可能可以使用自定义浏览器扩展,但这取决于浏览器。另一种方法是创建一个 Java 小程序,它可以从不同的服务器下载文件。该小程序可以接受不同服务器的 URL 作为参数。
关于javascript - 下载一个文件,片段存储在多个服务器上(HTTP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9457693/