【发布时间】:2019-10-05 09:52:08
【问题描述】:
我正在尝试将文件上传到 s3,但它并没有像我预期的那样发生。
我在中间件中创建了一个file-helper.js,如下所示
const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
aws.config.update({
accessKeyID:'XXXXXXXXXXXXXX',
SecretAccessKey:'XXXXXXXXXXXXXXXXXXXXXXXXXXX',
region:'ap-south-1'
});
const s3 = new aws.S3();
const fileFilter = (req, file, cb) => {
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
cb(null, true);
} else {
cb(new Error('Invalid file type, only JPEG and PNG is allowed!'), false);
}
}
const upload = multer({
fileFilter,
storage: multerS3({
s3,
bucket: 'demo.moveies.com',
acl: 'public-read',
metadata: function (req, file, cb) {
cb(null, {fieldName: file.fieldname});
},
key: function (req, file, cb) {
cb(null, Date.now().toString())
}
})
})
module.exports = upload;
我的控制器文件如下所示
const upload = require('../middleware/file-helper');
const imageUpload = upload.single('image');
exports.fileUpload = async(req,res)=>{
imageUpload(req, res, function(err, some) {
if (err) {
return res.status(422).send({errors: [{title: 'Image Upload Error', detail: err.message}] });
}
return res.json({'imageUrl': req.file.location});
});
}
当到达 API 端点时会报错
{ “错误”:[ { "title": "图片上传错误", “详细信息”:“配置中缺少凭据” } ] }
我无法弄清楚我的代码哪里出错了。在这种情况下谁能帮助我
【问题讨论】:
-
疑难解答 - 您的 S3 配置是否正确?特别是地区?
-
我的 s3 存储桶区域是
Asia Pacific(mumbai),所以我提到了ap-south-1.. 其余的accessKeyID和SecretAccessKey与 s3 存储桶相同 -
请确保这一点。您可以通过 amazon s3 url 找到您所在的地区。
-
无论我有什么键,我都直接在
aws.config.update()配置,请检查我的问题 -
@Subhajit 甚至我从官方文档中检查了docs.aws.amazon.com/general/latest/gr/rande.html