【发布时间】:2020-09-20 16:13:07
【问题描述】:
我正在尝试将图像上传到 s3 Bucket。并在网上尝试了许多解决方案,但我得到了上述错误。我不想在本地存储图像,而是想直接将它们上传到 s3 存储桶。任何帮助将不胜感激。
这是 Upload.js 文件
const AWS = require('aws-sdk');
const Keys = require('../Config/dev');
const { v4: uuidv4 } = require('uuid');
const axios = require('axios').default;
const multer = require('multer');
const multerS3 = require('multer-s3');
const s3 = new AWS.S3({
accessKeyId: Keys.accessKeyId,
secretAccessKey: Keys.secretAccessKey,
region : 'ap-south-1'
});
var upload = multer({
storage: multerS3({
s3: s3,
bucket: 'thebucketname',
acl : "public-read",
metadata: function (req, file, cb) {
cb(null, {fieldName: file.fieldname});
},
key: function (req, file , cb){
cb(new Date().toISOString().replace(/[-T:\.Z]/g, "") + file.originalname);
}
})
});
module.exports = upload;
这是路由器代码
const express = require('express');
const Router = express.Router();
const controllers = require('../controllers/controllers.js');
const uploader = require('../controllers/Upload');
const singleUpload = uploader.single('img');
Router.post('/single-image',(req, res)=>{
singleUpload(req, res , (err)=>{
if(!req.file){
console.log(req.file);
}else
{
console.log(req.file);
return res.json({'imageUrl': req.file.location});
}
});
});
这就是我使用邮递员进行 api 请求的方式。我还在邮递员的标头内将 Content-Type 设置为 Multipart/form-data 。执行此操作时,我收到 req.file 的错误“未定义”。
另外,如果我使用
app.use(multer({dest:'./public/uploads/'}).single('file'));
我的文件存储在“上传”文件夹中,但随后出现错误“req.file.location undefined”,并且文件未上传到 aws。
【问题讨论】:
标签: node.js amazon-s3 file-upload error-handling multer-s3