【问题标题】:Library to upload to Google Cloud Storage with a signed URL?要使用签名 URL 上传到 Google Cloud Storage 的库?
【发布时间】:2017-09-16 18:10:41
【问题描述】:

我正在构建一个需要让用户上传大文件的网络应用。我想使用谷歌云存储。我花了几天时间阅读文档,但我仍然不确定如何从浏览器实际启动上传。

我知道为此目的需要一个签名 URL(允许匿名用户上传到存储桶),我可以在服务器上生成该 URL 并发送到浏览器。

但是,JavaScript Client Library 似乎只打算在具有用户或服务帐户身份验证的应用程序服务器上运行。例如,@google-cloud/storage 包具有生成签名 URL 的方法,但没有使用该签名 URL 上传文件的方法。

我错过了什么?

PS - 这些将是大文件,因此执行可恢复上传会很好。

更新:据我所知 (hints here),您只需要 PUT 或 POST 到签名的 URL。所以我想我应该去寻找一个包装 XHR 的通用文件上传实用程序。 (也许是 jQuery?)

【问题讨论】:

    标签: google-cloud-storage


    【解决方案1】:

    我不相信这样的图书馆存在。您可能只想使用标准 JavaScript 或您喜欢的库来进行删除 HTTP 调用。

    您将对签名 URL 进行初始 POST。这将导致 201,如下所示:

    HTTP/1.1 201 Created
    Location: https://example.storage.googleapis.com/music.mp3?upload_id=tvA0ExBntDa...gAAEnB2Uowrot
    Date: Fri, 01 Oct 2010 21:56:18 GMT
    Content-Length: 0
    Content-Type: audio/mpeg
    

    “Location”标头中的 URL(包括 upload_id 参数)是您将使用 PUT 跟进您的数据的 URL。该操作可以中断和恢复。

    这里有更多关于如何通过 XML 使用可恢复上传的文档:https://cloud.google.com/storage/docs/xml-api/resumable-upload

    【讨论】:

    • “我不相信这样的图书馆存在。”考虑到 GCP 的重要性和 Google 已经提供的代码量,这有点令人震惊,但没关系。我想我只需要花一天的时间来手动实现所有步骤和 UI……(在弄清楚 XHR 之后,我以前从未直接使用过……)
    • 如果您不需要可恢复的上传支持,只需一个电话即可。您可能会发现更简单的替代方法是使用政策文件形成 POST。它们像 HTML 表单一样工作,除了带有带有签名策略的额外隐藏字段:cloud.google.com/storage/docs/xml-api/post-object
    • 如何在 put 方法中使用signedurl?标题应该是什么,数据应该是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多