2017-04-20 107 views
0

我正在构建一个需要让用户上传大文件的web应用程序。我想使用Google云端存储。我花了几天的时间阅读文档,但我仍然不确定如何从浏览器实际启动上传。使用签名的URL将图书馆上传到Google Cloud Storage?

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

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

我错过了什么?

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

更新:从我所知道的(hints here),你只需要PUT或POST到签名的URL。所以我想我应该去阻止一个包装XHR的通用文件上传工具。 (也许jQuery?)

回答

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 

在“位置”标头,包括upload_id参数的URL,是指向的网址,你会用你的数据PUT跟进。该操作可以被中断并恢复。

有一个关于如何正确地使用断点续传与XML这里更多的文档:“我不相信有这样的图书馆存在” https://cloud.google.com/storage/docs/xml-api/resumable-upload

+0

考虑到GCP的重要性以及谷歌已经提供的代码量,这种做法有点令人震惊,但确实如此。我想我只需要分配一天来手动实现所有的步骤和UI ...(在找出XHR之前,我从来没有直接使用过...) – odigity

+1

如果你不需要可恢复的上传支持,你可以通过一次呼叫逃脱。 您可能更容易找到的替代方案是使用政策文件形成POST文件。它们像HTML表单一样工作,除了带有带签名策略的额外隐藏字段:https://cloud.google.com/storage/docs/xml-api/post-object –

相关问题