概述:
我使用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')问题:
此对象在上载新文件时工作,但不用于更新它(重命名文件)。
发布于 2018-08-18 10:25:00
问题在以下几个方面:
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-18 12:55:13
可能不是您需要在存储中传递的密钥对象,而是为此而工作的
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now()+path.extname(file.originalname))
}https://stackoverflow.com/questions/51907413
复制相似问题