0

概述:

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

这是我的上传对象:

  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')

问题:

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

4

2 回答 2

0

可能它不是您需要在存储中传递的关键对象我的作品为此

 filename: function (req, file, cb) {
  cb(null, file.fieldname + '-' + Date.now()+path.extname(file.originalname))
}
于 2018-08-18T12:55:13.127 回答
0

问题在下面一行:

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}`);
}
于 2018-08-18T10:25:00.593 回答