Amazon s3 への直接アップロードを可能にする FineUploader の新機能を使用しようとしています。現在、写真をアップロードできません。「無効なポリシー ドキュメントまたはリクエスト ヘッダーです!」というエラーが表示されます。
開発者は、質問をここ stackoverflow に投稿するよう求めました。
このページの指示に従っています。
セットアップでは、そこにリンクされているサンプル ファイルもエミュレートしました 。
このように、ほとんどオプションを使用せずに JavaScript を設定しています。
$('#fineuploader-s3').fineUploaderS3({
request: {
endpoint: "http://thenameofmybucket.s3.amazonaws.com",
accessKey: “mypublicaccesskey”
},
signature: {
endpoint: "s3demo.php"
},
iframeSupport: {
localBlankPagePath: "/success.html"
},
cors: {
expected: true
}
});
これが私にとってうまくいかなかった可能性のある場所がたくさんあることを私は知っています。s3 や fineuploader を使用したことがないので、ばかげた質問でしたら申し訳ありません。しかし、セットアップで私が最も混乱した場所は次のとおりです。問題は#1にあると感じています:
(1) JavaScript の例では、署名へのパスは次のように設定されます。
// REQUIRED: Path to our local server where requests can be signed.
signature: {
endpoint: "/s3/signtureHandler"
},
それがjsonが作成される空のファイルであることを意味しているのか、それともjsonを作成する関数があるphpスクリプト、私の場合は直接コピーしたs3demo.phpを指しているのか、私にはわかりませんでした。
(2) s3demo.php ファイルで、変更したのは次の行だけです。
$clientPrivateKey = $_SERVER['I put my private key here'];
$expectedBucket = "http://thenameofmybucket.s3.amazonaws.com";
function handlePreflightedRequest() {
// If you are relying on CORS, you will need to adjust the allowed domain here.
header('Access-Control-Allow-Origin: http://mywebsitename.org');
}
(3) これは私が CORS ファイルに持っているものです。説明ページの例にはタグが含まれていないため、正しいかどうかはわかりませんでした:
<CORSRule>
<AllowedOrigin>http://mywebsitename.org</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
(4) 手順の詳細に従って、IAM パネルに移動し、手順から正確にコピーされたポリシーを使用してグループを作成しましたが、バケットの実際の名前を使用します。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::thenameofmybucket/*”
}]
}
、次に、javascript ファイルと php ファイルでそれぞれ使用されるパブリック アクセス キーとプライベート アクセス キーを取得したユーザーです。ユーザー名は、スクリプトのどこにも特に使用されていません。
ここで私が間違ったことをしたことが本当に明白であることを願っています。御時間ありがとうございます。