【问题标题】:Can I do a resumable upload with a Google Cloud Storage signed URL?我可以使用 Google Cloud Storage 签名 URL 进行可恢复上传吗?
【发布时间】:2013-01-12 05:09:03
【问题描述】:

使用 Google Cloud Storage,我想将必要的信息传递给客户以进行resumable upload。这可能吗?

【问题讨论】:

    标签: upload google-cloud-storage


    【解决方案1】:

    是的,这是可能的。

    对于已通过云存储服务身份验证的服务器和希望授予访问权限的客户端,典型的签名 URL 上传工作流程如下所示:

    1. 客户端请求签名以便执行 PUT
    2. 您的服务器使用described here 方法创建并返回一个签名的URL
    3. 客户端使用返回的URL 执行 PUT

    可恢复的工作流程如下所示:

    1. 客户端请求签名以便执行 PUT
    2. 您的服务器确实使用described here 方法创建并返回一个签名的URL
    3. 您的服务器发出一个 POST 请求,以 described here 启动可恢复上传
    4. 您的服务器将URLUpload ID 返回给客户端
    5. 客户端使用提供的URLUpload ID 执行一个或多个 PUT

    【讨论】:

    • 您介意分享一下您如何使用 javascript 或 jQuery 将文件放入签名的 url 吗?
    • 我手头没有任何javascript示例代码,但你可以看看这个:stackoverflow.com/questions/2153917/…
    • 可恢复工作流第 3 步中的链接现在指向顶级 google 存储文档。如果它直接转到您所指的可恢复上传页面,可能会更有帮助。
    【解决方案2】:

    我刚刚在docs here 上找到了这个注释:

    注意:如果您的用户只是将资源(写入)上传到访问控制的存储桶,您可以使用 Google Cloud Storage 的可恢复上传功能,并避免签署 URL 或需要 Google 帐户。在可恢复上传场景中,您的(服务器端)代码会进行身份验证并启动向 Google Cloud Storage 的上传,而无需实际上传任何数据。启动请求返回一个上传 ID,然后可以在客户端请求中使用该 ID 上传数据。客户端请求不需要签名,因为上传 ID 实际上充当身份验证令牌。如果您选择此路径,请务必通过 HTTPS 传输上传 ID。

    所以基本上你不需要签名的网址。上传ID就足够了。程序如下:

    1. 客户端请求上传,以便执行 PUT
    2. 您的服务器发出 POST 请求以启动可恢复上传。
    3. 您的服务器将上传 ID 返回给客户端。
    4. 客户端执行 PUT 以使用提供的上传 ID 上传文件。

    【讨论】:

    • 这不再存在于文档中。我在another page 中发现“可恢复上传被固定在它们开始的区域。[...] 例如,如果您在美国创建一个可恢复上传 URL 并将其提供给亚洲的客户,则上传仍然通过美国。[...] 为避免这种情况,请让服务器构造和签名初始 POST 请求,然后将签名的 URL 提供给客户端,以便从其位置启动上传。
    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2016-05-26
    相关资源
    最近更新 更多