web-dev-qa-db-ja.com

Node JS AWS S3ファイルのアップロード。パブリックURL応答を取得する方法

Node SDKを使用してファイルをAmazon S3にアップロードしています。

ファイルのアップロードは正常に機能していますが、ファイルのパブリックURLを取得してクライアントに送り返したいのですが。

現時点で私が得る応答は:

Successfully uploaded data { ETag: '"957cd1a335adf5b4000a5101ec1f52bf"' }

これが私のコードです。 Node Expressサーバーと、Multerを使用してアップロードを処理しています。

app.use(multer({ // https://github.com/expressjs/multer
      dest: './public/uploads/', 
      limits : { fileSize:100000 },
      rename: function (fieldname, filename) {
        var time = new Date().getTime();
        return filename.replace(/\W+/g, '-').toLowerCase() + time;
      },
      onFileUploadData: function (file, data, req, res) {
        // file : { fieldname, originalname, name, encoding, mimetype, path, extension, size, truncated, buffer }
        var params = {
          Bucket: creds.awsBucket,
          Key: file.name,
          Body: data,
          ACL: 'public-read'
        };

        var s3 = new aws.S3()
        s3.putObject(params, function (perr, pres) {
          if (perr) {
            console.log("Error uploading data: ", perr);
          } else {
            console.log("Successfully uploaded data", pres);
          }
        });
      }
    }));

    app.post('/upload-image', function(req, res){
        if(req.files.file === undefined){
            res.send("error, no file chosen");
        }
    });
20
Jack Wild

putObjectの代わりにploadを使用します。 Locationキーで公開URLを返します

27
Birju Shah