![](/img/trans.png)
[英]How to upload a file to Google Cloud Storage on Python 3?
[英]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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.