ファイルをアップロードするために axios を使用して Google クラウド ストレージ バケットにアクセスしようとしています。
バケットの CORS ポリシーを次のように設定しました。
[
{
"origin": ["http://localhost:8000", "localhost"],
"responseHeader": ["Access-Control-Allow-Origin", "Content-Type"],
"method": ["GET", "HEAD", "DELETE", "PUT", "POST"],
"maxAgeSeconds": 3600
}
]
次に、次の gsutil コマンドを使用して署名付き URL を生成します。
gsutil signurl -m RESUMABLE -d 1h my-key.json gs://test-bucket/
最後に、この axios POST リクエストを送信します。
var startLink = "signed url from gsutil"
var data = {
'Content-Length': 0,
'Content-Type': 'text/plain',
'x-goog-resumable': 'start',
host: 'test-django-bucket.storage.googleapis.com',
};
axios.post(startLink, data)
.then(function(response) {
console.log(respone);
});
私が得るこの結果は次のとおりです。
<?xml version='1.0'
encoding='UTF-8'?><Error><Code>InvalidPolicyDocument</Code><Message>The content of the form does not meet the conditions specified in the
policy document.</Message><Details>Missing policy</Details></Error>
ここで私は正確に何を間違えましたか?ここにある指示に従っています。
更新: 以下の @BrandonYarbrough から、数回後にすべてを機能させるために修正しなければならなかったことに関するいくつかのメモ:
最初に axios リクエストが間違っていました。次のようになります。
var data = {
headers: {
'content-type': 'text/plain',
'x-goog-resumable': 'start',
}
};
axios.post(startLink, {}, data)
.then(function(response) {
console.log(response);
});
次に、以下で説明するように gstuil コマンドを更新する必要がありました。
gsutil signurl -m RESUMABLE -d 10h -c "text/plain" mykey.json gs://test-bucket