【问题标题】:rename uploaded Images on Multer-s3在 Multer-s3 上重命名上传的图像
【发布时间】:2018-08-18 20:55:13
【问题描述】:

概述:

我正在使用 S3 让用户上传图片。 我正在使用PUT 方法处理更新路由,该方法获取存储在S3 存储桶中的临时文件夹中的给定图像的url,并将其删除到图像文件夹中。

这是我的上传对象:

  const upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'my-bucket',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    acl: 'public-read',
    key: function (request, file, cb) {
      cb(null, folder + Date.now() + file.originalname);
    }
  }),
  limits:{
    fileSize: 1024 * 1024 * 5
  },
  fileFilter:fileFilter
});

在我使用的路由文件中:

upload.single('the_key_of_the_file')

问题:

此对象在上传新文件时有效,但不适用于更新 它(重命名文件)。

【问题讨论】:

    标签: node.js amazon-s3 multer multer-s3


    【解决方案1】:

    问题出在下面一行:

    key: function (request, file, cb) {
          cb(null, folder + Date.now() + file.originalname);
        }
    

    实际上密钥是 aws-s3 中文件的名称/ID。您提供了一个新密钥,因此 s3 将标记为新文件。

    您可以根据需要更改此处的逻辑,它应该是一个字符串。

    例如:

    key: function (req, file, cb) {
        console.log(file);
        cb(null, `${Date.now().toString()}${file.originalname}`);
    }
    

    【讨论】:

      【解决方案2】:

      可能不是您需要在存储中传递的 key 对象,我为此工作

       filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now()+path.extname(file.originalname))
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-02
        • 1970-01-01
        • 2017-05-22
        • 1970-01-01
        • 2016-05-22
        • 2015-12-03
        • 1970-01-01
        • 2017-12-01
        相关资源
        最近更新 更多