7
amazon Webサーバーに画像をアップロードしたいのですが、そのためにnodejsでaws-sdkを使用しています。aws-sdkを使用してnodejsを使用してs3に画像をアップロード
イメージをs3バケットにアップロードできますが、URLにアクセスするためにURLをクリックすると、アクセス拒否エラーが発生します。
はここに私の設定です
var AWS = require('aws-sdk');
//aws credentials
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "<access_key>";
AWS.config.secretAccessKey = "<secret_key>";
AWS.config.region = "ap-southeast-1";
AWS.config.apiVersions = {
"s3": "2006-03-01"
}
var s3 = new AWS.S3();
var bodystream = fs.createReadStream(req.files.pic.path);
var params = {
'Bucket': '<bucket_name>',
'Key': 'uploads/images/' + req.files.pic.name,
'Body': bodystream,
'ContentEncoding': 'base64',
'ContentType ': 'image/jpeg'
};
//also tried with s3.putObject
s3.upload(params, function(err, data){
console.log('after s3 upload====', err, data);
})
画像が正常にアップロードされているが、そのコンテンツタイプがアプリケーション/オクテットです。また、私はいくつかの権限の問題があると思います。新しい権限を追加するとイメージをダウンロードできますが、それを見ることはできません。
この設定で何が問題なのか、またs3.uploadとs3.putObjectメソッドの違いを知りたいのですか?あなたがMetadata
セクションを定義する必要がContent-Type
ヘッダを指定するために
を私は { [SignatureDoesNotMatchは、コンテンツタイプをこのように指定しようとした場合、このエラーを取得あなたが提供した署名と一致してください。あなたの鍵と署名の方法を確認してください。] message: '計算したリクエストの署名が、あなたが提供した署名と一致しません。 。あなたの鍵と署名の方法を確認してください '、 コード: 'SignatureDoesNotMatch'、 時間:金2015年10月30日午前12時55分30秒GMT + 0530(IST)、 からstatusCode:403、 再試行可能な値:false、 はretryDelay:30 } –
@BhushanGoelコードを修正しました。コンテンツタイプのダッシュを忘れました –
これはうまくいきました.3Sコンソールでこれを見ることができます: x-amz-meta-content-type: image/png –