node.js - multer s3的上传功能出错但错误为空
问题描述
以下是上传功能的代码和使用它的路由。
const upload = multer({
storage: multerS3({
s3: s3,
bucket: bucketName,
metadata: function (req, file, cb) {
cb(null, {fieldName: file.fieldname});
},
key: function (req, file, cb) {
cb(null, file.originalname)
}
})}).array('recfile',6);
router.post('/add',(req,res)=>{
try{
let files = req.files;
upload(req,res,function(error){
if (err instanceof multer.MulterError) {
return res.status.json({"error":error});
} else if (err) {
return res.status.json({"error":error});
}
return res.status(200).json({"Message":"No Multer Error"});
})
}catch(error){
return res.status(400).json({"error":error,"message":"Error encountered here"});
} //THIS IS BEING RETURNED
let image = [];
for(let i = 0;i<files.length;i++){
var params = { Bucket:bucketName, Key:files[i].originalname };
s3.getSignedUrl('getObject',params, async function (err, data) {
if (err) {
return res.status(400).json({"error":err});
}
image.push(data);
});
}
productValidate(req.body).then((response)=>{
// const fileStream = fs.createWriteStream(req.file.path);
const newProduct = new Product({
name:req.body.name,
price:req.body.price,
category:req.body.category,
gender:req.body.gender,
images:image,
userId:"60b381e3f0a79c000447a4ad"
})
newProduct.save().then(async(response) =>{
// User.updateOne({_id:"60b15d602c54f56fcc6370e6"},{
// products:response
// },{new:true});
await User.findOne({_id:newProduct.userId}).then(async (user)=>{
let tempArray = user.products;
tempArray.push(response);
await User.updateOne({_id:newProduct.userId},{
products:tempArray
},{new:true}).then(()=>{console.log("Updated")}).catch(error=>{
console.log("error here");
console.log(error);
});
})
return res.status(200).json({message:"Success",response:response});
}).catch(error =>{
return res.status(400).json({message:"Failure",error:error.message});
})
}).catch(error => {
return res.status(400).json({error: error.message})
});
})
以下是我前端的axios函数
axios.post('https://peaceful-fjord-73813.herokuapp.com/product/add%27,%7B
name:name,
price:newPrice,
gender:gender,
category:category,
recfile:selectedFiles,
// userId:"60bb9b95a1996d0004833ab4",
})
.then(res=>{
console.log(res);
}).catch(err=>{
console.log(err.response);
})}
以下是我从服务器得到的响应。这是我返回的 400 错误以及在我的帖子路由中上传的 try catch 块中的消息,但是错误对象本身是空的,这就是为什么我无法理解错误是什么以及我应该如何解决它。
非常感谢你帮助我
最好的问候,
里沙夫
解决方案
推荐阅读
- css - 覆盖Angular中的css类
- sql - 将两列合二为一
- python - 用 Hy 中的索引替换列表/字典元素
- angular - 如何在 Bootstrap 模态体内实现 col-lg-10 col-lg-2?
- ios - 如何自动圆化弹出视图的边缘?
- clojure - 在 Clojure 中格式化输入提示
- regex - 正则表达式问题 - 匹配单个字母。排除连续字母
- python - boto3 客户端线程安全吗
- javascript - 创建幻灯片但出现错误 Uncaught ReferenceError: currentYearSlide is not defined
- python - 创建命令 Python 的输出