この機能を使用して、サーバーにアップロードされた画像を取得し、それらをaws S3バケットに送信してから、マシンから削除します。それはすべてうまくいっています。
Amazonがイメージをパブリックとして適切なContent-Type(image/jpegまたはimage/png)で提供するようにイメージを構成するにはどうすればよいですか?現在、デフォルトでprivate and(application/octet-stream)になっています。
これはノードで構成できるものですか?または、AWSコンソールでそれを行う必要がありますか?
function sendFileToAmazon(file) {
var s3bucket = new AWS.S3({
params: {Bucket: 'BUCKET NAME'}
});
var params = {Key: file.name, Body: ''};
fs.readFile(file.path, function(err, data) {
if (err) throw err;
params.Body = data;
s3bucket.putObject(params, function(errBucket, dataBucket) {
if (errBucket) {
console.log("Error uploading data: ", errBucket);
} else {
console.log(dataBucket);
deleteFileFromTmp(file);
}
});
});
}
これは私の質問に答えるのに最適なソースですが、最初はここで答えを見つけられませんでした: http://docs.aws.Amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
私はここで私の答えを見つけました: http://blog.katworksgames.com/2014/01/26/nodejs-deploying-files-to-aws-s3/
簡単に追加できます:ContentType: file.mimetype, ACL: 'public-read'
paramsに、回します:
var params = {Key: file.name, Body: ''};
に
var params = {Key: file.name, Body: '', ContentType: file.mimetype, ACL: 'public-read'};
編集:
ファイルのmimetypeを指定するのではなく、「image/jpg」、「image/jpeg」、「image/png」、「image/gif」などの特定のmimetypeのみを許可できます。
編集#2:元の質問はアップロード時の構成に関するものですが、これもおそらく関連性がありますこれを見ている人々の何人か:
https://aws.Amazon.com/premiumsupport/knowledge-center/s3-allow-certain-file-types/