2016-08-03 38 views
2

コンテンツタイプがファイルをアップロードするにはmutlipart/formdata ---boundaryString Googleストレージのsigned urlを使用していますか?署名付きURL付きGoogleストレージ

私が直面している問題は、ブラウザでコンテンツタイプがmutlipart/formdata ---boundaryStringとなるファイルをアップロードするときです。ここで、boundaryStringはcontent-typeヘッダー値の動的部分です。

Googleの署名方式では、content-typeが署名の一部である必要があります。署名されたURLを生成することは不可能になりました。

答えて

2

ウェブ上のフォームを使用してアップロードする場合、GCSは「ポリシー文書」と呼ばれる通常の署名付きURLの代替方法を提供します。ポリシー文書は、どのような種類のアップロードが適切かどうかを記述した署名付きアップロードポリシーで、フォーム投稿のパラメータの1つに含まれています。

詳細はhttps://cloud.google.com/storage/docs/xml-api/post-object#policydocumentを参照してください。

ので、例えば、アップロードは次のようになり許可されたHTMLフォーム:

<form action="http://travel-maps.storage.googleapis.com" 
method="post" 
enctype="multipart/form-data"> 
    <input type="text" name="key" value=""> 
    <input type="hidden" name="bucket" value="travel-maps"> 
    <input type="hidden" name="Content-Type" value="image/jpeg"> 
    <input type="hidden" name="GoogleAccessId" value="[email protected]"> 
    <input type="hidden" name="acl" value="bucket-owner-read"> 
    <input type="hidden" name="success_action_redirect" value="http://www.example.com/success_notification.html"> 
    <input type="hidden" name="policy" value="eyJleHBpcmF0aW9uIjogIjIwMTAtMDYtMTZUMTE6MTE6MTFaIiwNCiAiY29uZGl0aW9ucyI6IFsNCiAgWyJzdGFydHMtd2l0aCIsICJrZXkiLCAiIiBdLA0KICB7ImFjbCI6ICJidWNrZXQtb3duZXItcmVhZCIgfSwNCiAgeyJidWNrZXQiOiAidHJhdmVsLW1hcHMifSwNCiAgeyJzdWNjZXNzX2FjdGlvbl9yZWRpcmVjdCI6ICJodHRwOi8vd3d3LmV4YW1wbGUuY29tL3N1Y2Nlc3Nfbm90aWZpY2F0aW9uLmh0bWwiIH0sDQogIFsiZXEiLCAiQ29udGVudC1UeXBlIiwgImltYWdlL2pwZWciIF0sDQogIFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLCAwLCAxMDAwMDAwXQ0KICBdDQp9"> 
    <input type="hidden" name="signature" value="BSAMPLEaASAMPLE6SAMPLE+SAMPPLEqSAMPLEPSAMPLE+SAMPLEgSAMPLEzCPlgWREeF7oPGowkeKk7J4WApzkzxERdOQmAdrvshKSzUHg8Jqp1lw9tbiJfE2ExdOOIoJVmGLoDeAGnfzCd4fTsWcLbal9sFpqXsQI8IQi1493mw="> 
    <input name="file" type="file"> 
    <input type="submit" value="Upload"> 
</form> 

「ポリシー」フィールドは、ユーザーがアップロードできる内容の説明が含まれています。これはベース64エンコードされたJSONドキュメントです。エンコードされていないが、それは次のようになります。

{"expiration": "2010-06-16T11:11:11Z", 
"conditions": [ 
    ["starts-with", "$key", "" ], 
    {"acl": "bucket-owner-read" }, 
    {"bucket": "travel-maps"}, 
    {"success_action_redirect": "http://www.example.com/success_notification.html" }, 
    ["eq", "$Content-Type", "image/jpeg" ], 
    ["content-length-range", 0, 1000000] 
    ] 
} 

「署名」フィールドには、署名されたURLのように動作します、あなたは政策ではなく、要求に署名していることを除いて。これはポリシー文書のrsa/sha-256のbase64エンコーディングです。

+1

私はポリシー文書戦略を使用してアップロードを再開できますか? – Bhuvan

+0

@Bhuvanこれまで、ポリシーを使用して再開可能なアップロードが可能かどうかの回答が見つかりましたか? – musicformellons

関連する問題