簡體   English   中英

如何使用 HTML forms 將文件上傳到谷歌雲存儲?

[英]How do I upload a file into google cloud storage using HTML forms?

我想使用 HTML forms 從客戶端將文件直接上傳到谷歌雲存儲桶。

我嘗試了https://cloud.google.com/storage/docs/xml-api/post-object-forms給出的步驟

我在https://cloud.google.com/storage/docs/authentication/signatures#policy-document中給出的相同模板中創建了一個策略文檔

{"expiration": "2020-06-16T11:11:11Z",
 "conditions": [
  ["starts-with", "$key", ""],
  {"bucket": "travel-maps"},
  {"success_action_redirect": "http://www.example.com/success_notification.html"},
  ["eq", "$Content-Type", "image/jpeg"],
  ["content-length-range", 0, 1000000],
  {"x-goog-algorithm": "GOOG4-RSA-SHA256"},
  {"x-goog-credential": "example_account@example_project.iam.gserviceaccount.com/20191102/us-central1/storage/goog4_request"},
  {"x-goog-date": "20191102T043530Z"}
  ]
}

我正在使用 HMAC-SHA256 簽名算法來實現我的目標。

我使用了 crypto-js 庫並按照上面的偽代碼創建了我的簽名密鑰。

我在嘗試上傳時收到此錯誤消息 ->

<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.</Message>
<StringToSign>eyJleHBpcmF0a...</StringToSign>
</Error>

我認為我執行以下偽代碼沒有任何問題。 我用另一個HMAC在線加密解密服務驗證了signing_key。

key_date = HMAC-SHA256("PREFIX" + HMAC_KEY_SECRET, "DATE")
key_region = HMAC-SHA256(key_date, "LOCATION")
key_service = HMAC-SHA256(key_region, "SERVICE")
signing_key = HMAC-SHA256(key_service, "REQUEST_TYPE")

下面是我的實現

    let key_date = crypto.HmacSHA256("20221207","GOOG4" + key);
    let key_region = crypto.HmacSHA256("asia-south2",key_date);
    let key_service = crypto.HmacSHA256("storage",key_region);
    let signing_key = crypto.HmacSHA256("goog4_request",key_service);

  
    let encoded_policy = btoa((JSON.stringify(this.PolicyDocument)));

    let MessageDigest = crypto.HmacSHA256(encoded_policy,signing_key);

    this.signature=MessageDigest.toString();

刪除此github 線程中提到的Content-type -type 或將Content-type更改為text/csvtext/plain

還要檢查 HTTP 方法也與此處提到的匹配。

有關更多信息,請查看此線程 1線程 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM