这是我的 File Upload.js,但是当我上传文件时,它会成功上传,但缺少扩展名,我想上传带有扩展名的文件。请帮助我
const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
aws.config.update({
secretAccessKey: '',
accessKeyId: '',
region: 'us-east-2'
});
const s3 = new aws.S3({ })
const fileFilter = (req, file, cb) => {
if (file.mimetype === 'music/AAC' || file.mimetype === 'music/AVI' ||file.mimetype === 'music/mp3' ||file.mimetype === 'music/AVI') {
cb(null, true)
} else {
cb(new Error('Invalid Mime Type, only JPEG and PNG'), false);
}
}
const upload = multer({
storage: multerS3({
fileFilter,
s3,
bucket: 'admin-song',
acl: 'public-read',
metadata: function (req, file, cb) {
cb(null, {fieldName: 'TESTING_META_DATA!'});
},
key: function (req, file, cb) {
cb(null, Date.now().toString())
}
})
})
module.exports = upload;
这是我的 Api 端点,请指导我
app.post('/v1/admin/upload/song',function(req, res) {
singleUpload(req, res, function(err) {
if (err) {
return res.status(422).send({errors: [{title: 'File Upload Error', detail: err.message}] });
}
console.log(res)
return res.json({'imageUrl': req['file'].location});
});
});
最佳答案
您必须在 multer 函数中添加您想要的任何字符串作为文件名。您可以使用以下方法将文件扩展名添加到文件
const upload = multer({
storage: multerS3({
fileFilter,
s3,
bucket: 'admin-song',
acl: 'public-read',
metadata: function (req, file, cb) {
cb(null, {fieldName: 'TESTING_META_DATA!'});
},
key: function (req, file, cb) {
cb(null, Date.now().toString() + '.' + fileExtension)
}
})
})
关于node.js - 我想将扩展名的文件上传到 aws s3,但它不会上传扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54364431/