【问题标题】:Upload big file to S3 without passing through server不经过服务器上传大文件到S3
【发布时间】:2016-11-09 11:39:50
【问题描述】:

我正在开发一个允许用户将大文件上传到服务器的网络应用程序,并且我正在使用 S3 来存储这些文件。为了能够上传任何大小的文件,我使用s3manager.Uploader 来简化分段上传。

因为有些文件会很大(~15gb),所以我想知道是否有可能做一些类似预签名 URL 的事情,但是对于分段上传?我想避免将数据上传到我的服务器,然后将其上传到 S3。理想情况下,我需要一个 URL,我可以在其中直接以 html 形式发送 POST,并避免使用我的网络服务器作为文件的代理。

【问题讨论】:

  • 我怀疑预签名表单 POST 上传限制为 5GB @fl0cke。
  • 我不认为有一个简单的答案,因为亚马逊倾向于设计事物,以便将协调此类事物的负担放在用户身上,这就是他们设法扩展的方式。你可能会发现this hashicorp blog post, discussing the same problem,这也解释了他们是如何解决它的(剧透:有很多代码)
  • @Michael-sqlbot 你确定吗?还有很多处理上传到 S3 的 javascript 库。 EvaporateJSFineUploadermule-uploader 等等
  • @fl0cke 如果我们谈论的是 native form post uploads 没有其他库(“我可以直接以 html 形式发送 POST 的 URL”),那么我'我有理由相信不支持更大的内容,尽管在文档中找到特定于POST 上传的内容并不容易。寻找,而不是寻找。

标签: amazon-web-services file-upload go amazon-s3


【解决方案1】:

@michael-sqlbot 是对的。只是做帖子,每个文件有 5GB 的限制。如果您在上传之前对每个请求进行预签名,则可以进行分段上传,这意味着您需要管理文件的拆分并要求服务器在上传之前对每个请求进行签名。

我最终遵循@fl0cke 的建议并使用https://github.com/TTLabs/EvaporateJS 来管理上传。它完成所有文件管理,您只需要实现服务器端功能即可对每个文件的请求进行签名。

【讨论】:

    【解决方案2】:

    每个对象存储的限制是5TB,这里你可以找到参考link

    【讨论】:

    • 除了旧的和被接受的答案之外,这个答案还有什么贡献吗?
    猜你喜欢
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    相关资源
    最近更新 更多