2017-04-20 105 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 –

相關問題