web-dev-qa-db-ja.com

Node js-アップロード時にawss3イメージを設定する

これまでに機能していること:

この機能を使用して、サーバーにアップロードされた画像を取得し、それらを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);
        }
      });
    });
  }
11
EmmaGamma

これは私の質問に答えるのに最適なソースですが、最初はここで答えを見つけられませんでした: 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/

29
EmmaGamma