Multer Uploadingİmages

问题描述 投票:0回答:1

我正在像博客一样编码网站,我们可以添加图片和文章。我正在使用multer,mongodb和multer。但是我收到一个错误,说

TypeError:无法读取未定义的属性'文件名'在C:\ Users \ agul \ Desktop \ NODEJS \veritabanı\ routes \ articles.js:58:33...

可能由于它找不到该filenme属性,所以无法上传图像。但是我不明白为什么它不起作用。

这是我的代码:

这是我的article.js

   const express = require('express');
const router = express.Router();
const multer = require('multer');

// Article Model
let Article = require('../models/article');
// User Model
let User = require('../models/user');

router.get('/sonuc', function(req, res){
  if(req.query.search) {
    const regex = new RegExp(escapeRegex(req.query.search), 'gi');
    Article.find({"title": regex}, function(err, articles) {
        if(err) {
            console.log(err);
        } else {
           res.render("sonuc", { 
             articles: articles 
            });
        }
    });
  }
});

function escapeRegex(text) {
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
};

// Add Route
router.get('/add', ensureAuthenticated, function(req, res){

  res.render('add_article', {
    title:'Add Article'
  });
});

const upload = multer({dest: __dirname + '/public/uploadss'});

// Add Submit POST Route
router.post('/add',upload.single('img'),  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 {
var article = new Article({
    title: req.body.title,
    author: req.user._id,
    img: '/uploads/' + req.file.filename,
    body: req.body.body,
   });

    article.save(function(err){
      if(err){
        console.log(err);
        return;
      } else {
        res.render('add_article', {
        });
      }
    });
  }
});

// Load Edit Form
router.get('/edit/:id', ensureAuthenticated, function(req, res){
  Article.findById(req.params.id, function(err, article){
    /*if(article.author != req.user._id){
      req.flash('danger', 'Not Authorized');
      return res.redirect('/');
    }*/
    res.render('edit_article', {
      title:'Edit Article',
      article:article
    });
  });
});

// Update Submit POST Route
router.post('/edit/:id', function(req, res){
  let article = {};
  article.title = req.body.title;
  article.author = req.body.author;
  article.body = req.body.body;

  let query = {_id:req.params.id}

  Article.update(query, article, function(err){
    if(err){
      console.log(err);
      return;
    } else {
      req.flash('success', 'Article Updated');
      res.redirect('/');
    }
  });
});

// Delete Article
router.delete('/:id', function(req, res){
  if(!req.user._id){
    res.status(500).send();
  }

  let query = {_id:req.params.id}

  Article.findById(req.params.id, function(err, article){
    if(article.author != req.user._id){
      res.status(500).send();
    } else {
      Article.remove(query, function(err){
        if(err){
          console.log(err);
        }
        res.send('Success');
      });
    }
  });
});

// Get Single Article
router.get('/:id', function(req, res){

  Article.findById(req.params.id, function(err, article){
    //User.findById(article.author, function(err, user){
      res.render('article', {
        article:article,
        //author: user.name
      });
    });
  });
//});

// Access Control
function ensureAuthenticated(req, res, next){
  if(req.isAuthenticated()){
    return next();
  } else {
    req.flash('danger', 'Please login');
    res.redirect('/users/login');
  }
}

module.exports = router;

而且我同时制作了一个img和文章的猫鼬模型。一切似乎都正确,但是我不明白我在哪里犯了错误。你能帮我吗 ?如果可以的话,我真的很感激。

node.js image mongoose filenames multer
1个回答
0
投票
的属性'文件名'

您在目标文件夹上有错字

const upload = multer({dest: __dirname + '/public/uploadss'});

应该是

const upload = multer({dest: __dirname + '/public/uploads'});
© www.soinside.com 2019 - 2024. All rights reserved.