Javascript Multer:文件的路径为';不对

Javascript Multer:文件的路径为';不对,javascript,node.js,multer,Javascript,Node.js,Multer,我将multer添加到我的NodeJS应用程序中,效果很好,只是我需要存储在db中的图像路径不正确。找不到问题,显然是我犯了个愚蠢的错误 这是我对multer的设置 const multer = require('multer'); const storage = multer.diskStorage({ destination: './public/images', filename: function(req, file, next){ next(null, Date.

我将multer添加到我的NodeJS应用程序中,效果很好,只是我需要存储在db中的图像路径不正确。找不到问题,显然是我犯了个愚蠢的错误

这是我对multer的设置

const multer = require('multer');

const storage = multer.diskStorage({
  destination: './public/images',
  filename: function(req, file, next){
      next(null, Date.now() + '-' + file.originalname);
  }
});

const upload = multer({ storage: storage});
下面是我如何使用它来存储路径

router.post('/add', upload.single('myImage'), function(req, res){
  req.checkBody('title','Title is required').notEmpty();
  //req.checkBody('author','Author is required').notEmpty();
  req.checkBody('body','Body is required').notEmpty();

  // Get Errors
  let errors = req.validationErrors();

  if(errors){
    res.render('add_article', {
      title:'Add Article',
      errors:errors
    });
  } else {
    let article = new Article();
    //var date = new Date();
    article.title = req.body.title;
    article.author = req.user._id;
    article.body = req.body.body;
    article.descript = req.body.descript;
    article.category = req.body.category;  
    article.date = getDate();
    article.time = getTime();
    article.comments = 0;   
    article.img = req.file.path;   
    console.log(req.file);
    article.save(function(err){
      if(err){
        console.log(err);
        return;
      } else {
        req.flash('success','Article Added');
        res.redirect('/');
      }
    });
  }
});
你可以从这里看到,这条路不对,我不能在路上使用它

{ _id: 5bd993756373a5182460aa2a,
  title: 'Sport 5',
  author: '5acab056708e0d1248cba6ed',
  body: 'sadddddddddddddd213',
  descript: 'dsadas',
  category: 'sport',
  date: '2018/10/31',
  time: '12:35',
  comments: 0,
  img: 'public\\images\\1540985717747-nike_logo_slogan_sport_advertising_42643_1280x1024.jpg',
  __v: 0 }

Multer在您的终端正常工作,您只需要将系统路径转换为url可访问的路径

这对你有帮助

article.comments = 0;
let fileUrl = req.file.path.replace(/\\/g, "/").substring("public".length);
article.img = fileUrl;

这种情况发生在windows中,因为windows中的任何文件路径都只有反斜杠,但要通过url访问文件,必须使用正斜杠。因此,只需使用下面的代码将所有反斜杠转换为正斜杠


const imageUrl=req.file.path.replace(“\”,“/”)

路径有什么不正确的地方?它以
public/images
开头,它有
\\
而不是
/
?你总是需要解释预期的结果应该是什么。因为
img
中的路径在我看来是正确的。为了使用路径,预期结果应该是斜杠而不是反斜杠。因为路径中有反斜杠,我无法获得图像。。或者我只是不知道如何获取它?
img
包含文件系统路径,因此如果您在windows上,则需要将文件系统路径转换为url。