HTML アップローダーを使用してファイルを S3 にアップロードしようとしています。このチュートリアルに従ってみました:
http://pjambet.github.com/blog/direct-upload-to-s3/
通常の HTML 形式でファイルを投稿できます。しかし、JQuery-file-upload プラグインを使用して同じフォームを投稿すると、Amazon から 403 が返されます。
ここに私のフォームがあります:
<form accept-charset="UTF-8" action="https://youboox_dev.s3.amazonaws.com" enctype="multipart/form-data" class='direct-upload' method="POST">
<input type="hidden" name="key" value="test-file-name">
<input type="hidden" name="AWSAccessKeyId" value="AKIZ[...]YSCA">
<input type="hidden" name="acl" value="private">
<input type="hidden" name="success_action_status" value="201">
<input type="hidden" name="policy" value="<%= Facades::AmazonFacade.policy %>">
<input type="hidden" name="signature" value="<%= Facades::AmazonFacade.signature %>">
<input type="file" name="file">
<input type="submit" value="Load this file">
そして、ここに私の jquery-uploader があります:
$('.direct-upload').fileupload({
url: $(this).attr('action'),
type: 'POST',
autoUpload: true,
dataType: 'xml',
add: function (event, data) {
jqXHR = data.submit();
}
私はアマゾンからこの答えを得ます:
オプションhttps://youboox_dev.s3.amazonaws.com/ 200 (OK)
POST https://youboox_dev.s3.amazonaws.com/ 403 (禁止)
================================================== ======
送信ボタンからこのフォームを送信すると、Amazon から OK の応答が返され、アップロードしたばかりのファイルをダウンロードできるので、ポリシーと署名が正しいと確信しています。
<PostResponse>
<Location>https://youboox_dev.s3.amazonaws.com/tottotoCVBNBV</Location>
<Bucket>youboox_dev</Bucket>
<Key>test-file-name</Key>
<ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag>
</PostResponse>