我有问题上传图片到mongodb使用multer为我的网站托管在heroku

qnyhuwrf  于 2023-01-01  发布在  Go
关注(0)|答案(1)|浏览(155)

我正在创建一个博客网站,并试图给予用户能够上传个人资料图片,我一直在尝试multer和各种配置,它一直告诉我错误:ENOENT:没有这样的文件或目录,打开'public/uploads/无论是这个还是请求通过,但没有图像被保存,有人能帮忙吗?
我的用户模式

username: String,
    email: String,
    password: String,
    profileImg:Buffer,
    googleId: String,
    facebookId:String,
    twitterId:String,
         created:{type: Date, required: true, default: Date.now}
     });
const storage = multer.diskStorage({
  destination: function(req, file, cb){

     cb(null,  './uploads');

},
filename : function(req, file, cb){
     cb(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
  }
});

const upload = multer({
  storage: storage,
});

post request to update users profile

app.post("/profilepic", upload.single("image"), (req, res)=>{
 console.log(req.file);
  User.updateOne({_id:req.user._id}, {$set:{profileImg: req.body.filename}}, (err)=>{
    if(err){console.log(err);}else{res.redirect("/settings")}
  })
  console.log(req.user);
});
yyyllmsg

yyyllmsg1#

您似乎正在尝试保存文件名,而不是实际文件。在架构中,您将profileImg属性定义为Buffer,因此您可以先读取文件(使用“fs”节点模块),然后尝试使用updateOne方法发送它。
另一种存储图片的方法是在文本字段中,你可以将服务器上存储的图片转换为base64格式,然后保存在mongo中,当你需要图片时,你可以获取base64格式,然后将其转换回文件。

相关问题