【问题标题】:How to rename a file with multer before uploading it to s3 bucket?如何在将文件上传到 s3 存储桶之前使用 multer 重命名文件?
【发布时间】:2019-10-22 12:36:37
【问题描述】:

我想在使用 multernode.jsexpress.js 上传到 aws s3 存储桶之前重命名每个文件

这就是我当前实现的样子

字体结尾

const file = e.target.files[0];
const formData = new FormData();
formData.append('file', file);
const { data } = await axios.post('api/aws/upload-image', formData);

后端

var storage = multer.memoryStorage();
const upload = multer({ storage }).single('file');

const s3Client = new aws.S3({
    accessKeyId: config.aws.accessKey,
    secretAccessKey: config.aws.secretKey,
    region: config.aws.region
});


router.post('/upload-image', async (req, res) => {
    upload(req, res, function(err) {
        if (err instanceof multer.MulterError || err)
            return res.status(500).json(err);

        const uploadParams = {
            Bucket: config.aws.bucket,
            Key: req.file.originalname,
            ACL: 'public-read',
            Body: req.file.buffer
        };

        s3Client.upload(uploadParams, (err, data) => {
            if (err) res.status(500).json({ error: 'Error -> ' + err });

            return res.status(200).send(data.Location);
        });
    });
});

上面的代码可以正常工作。但我正在尝试在文件上传之前重命名它。

我想过这样做:

var storage = multer.diskStorage({
    filename: function (req, file, cb) {
      cb(null, Date.now() + '-' +file.originalname )
    }
})

但这会返回一个文件元素,而不是一个 blob 元素,因此不会上传到 s3 存储桶。

我怎样才能让文件被发送到 node.js 时,我首先更改文件名,然后上传文件?

【问题讨论】:

    标签: node.js amazon-web-services express amazon-s3 multer


    【解决方案1】:

    upload方法使用PutObjectRequest,PutObjectRequest构造函数的关键参数其实就是上传文件的名字。

    只需将 Key 值更改为您的新名称即可。

    const uploadParams = {
      Bucket: config.aws.bucket,
      Key:  "NEW_NAME_WHAT_YOU_WANT", // req.file.originalname,
      ACL: 'public-read',
      Body: req.file.buffer
    };
    

    【讨论】:

      猜你喜欢
      • 2016-09-21
      • 1970-01-01
      • 2011-03-25
      • 2018-04-25
      • 2016-07-13
      • 1970-01-01
      • 2020-01-24
      • 2021-08-08
      • 1970-01-01
      相关资源
      最近更新 更多