0
根據@ brandon-yarbrough在此SO question中提供的答案,我選擇使用簽名URL將對象上傳到雲端存儲。我產生通過google-cloud-storage
庫簽署網址如下:將對象上傳到Google雲端存儲
private static Storage storage = StorageOptions.getDefaultInstance().getService();
URL uploadUrl = storage.signUrl(
BlobInfo.newBuilder(IMAGE_BUCKET, fileName).build(),
30,
TimeUnit.MINUTES,
Storage.SignUrlOption.httpMethod(HttpMethod.PUT));
當我嘗試將文件上傳到生成的URL,我得到下面的錯誤。
<?xml version='1.0' encoding='UTF-8'?>
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>Anonymous users does not have storage.objects.create access to bucket the-awesomest-bucket.</Details>
</Error>
我簽署URL的理解是,用戶不需要進行身份驗證,因此允許匿名用戶沒有我不必設置桶任何特殊權限上傳數據。我錯過了什麼嗎?
您確定您的上傳請求中包含所有查詢參數嗎? –
看起來我不正確地發送查詢 - 而不是發送請求作爲查詢參數,我發送它在標題。現在我看到'我們計算的請求籤名與您提供的簽名不匹配。檢查您的Google密鑰和簽名方法' – Raunak