【问题标题】:File upload using express nodejs multer?使用express nodejs multer上传文件?
【发布时间】:2018-07-21 05:38:03
【问题描述】:

我正在尝试使用 multer 在 express 中上传文件图像,并且文件正在目录中上传,但文件名未保存在数据库中。我正在使用带有 express 的 mongodb。文件名保存为 noimage.png。

routes/posts.js:-

router.post('/add', function(req, res, next) {
  if(req.files.mainimage){
    console.log('Uploading files...');

    // File Info
    var mainImageOriginalName = req.files.mainimage.originalname;
    var mainImageName = req.files.mainimage.name;
    var mainImageMime = req.files.mainimage.mimetype;
    var mainImagePath = req.files.mainimage.path;
    var mainImageExt = req.files.mainimage.extension;
    var mainImageSize = req.files.mainimage.size;
  }
  else{
    var mainImageName = 'noimage.png';
  }
  //console.log(req.files.mainimage.name);

  // Check for errors
  var errors = req.validationErrors();

  if(errors){
    res.render('add', {
        errors: errors,
    });
  }
  else{
    var posts = db.get('posts');

    // Submit to db
    posts.insert({
        mainimage: mainImageName
    }, function(err, post){
        if(err){
            res.send('There was an issue submitting the post');
        }
        else{
            req.flash('success', 'Post Submitted');
            res.location('/posts');
            res.redirect('/posts');
        }
    });
  }
});

【问题讨论】:

  • 如果使用 mainImageOriginalName 而不是 mainImageName(第 31 行)将其保存到 DB 会发生什么?
  • 其实 req.files.mainimage 返回 false。所以,进入 else 块。
  • 你试过用 req.file 代替 req.files 吗?您是上传一张图片还是多张图片?您能否发布完整的 posts.js 文件,以便我们确保您的依赖项正确无误?
  • 是的,我已经尝试过 req.file,但没有成功,抛出错误作为未定义的属性。
  • 这是在 github 上还是其他什么东西让我可以查看整个项目?

标签: javascript node.js express pug


【解决方案1】:

如果您使用的是 multer,您似乎没有指定为 multer 的规范

router.post('/add', multer({ dest: './uploads/'}).single('myimage'), function(req,res){...})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2017-03-29
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2017-11-12
    • 2021-03-08
    相关资源
    最近更新 更多