表达身体分析器和热熔价值接收问题?

时间:2018-10-09 08:26:17

标签: node.js express multer body-parser

我正在向发布请求/product/create发送一些值和一张图片。

如果我控制台

之前的每个值
upload(req, res, (err) => {})

显示正确,没有图像信息。

如果我收到upload(req, res, (err) => {})之后的值

没有值显示。

完整的帖子请求代码:

  app.post('/product/create', (req, res) => {
      let filename;
      upload(req, res, (err) => {
        if(err){
          res.render('index', {
            msg: err
          });
        } else {
          if(req.file == undefined){
            res.render('index', {
              msg: 'Error: No File Selected!'
            });
          } else {
            res.render('index', {
              msg: 'File Uploaded!',
              filename = req.file.filename;
            });
          }
        }
      });

      const product = {
        title : req.body.title,
        desc  : req.body.desc,
        image  : filename,
      }
    });

配置Multer:

const storage = multer.diskStorage({
  destination: './public/uploads/',
  filename: function(req, file, cb){
    cb(null,file.fieldname + '-' + Date.now() + path.extname(file.originalname));
  }
});


const upload = multer({
  storage: storage,
  limits:{fileSize: 1000000},
  fileFilter: function(req, file, cb){
    checkFileType(file, cb);
  }
}).single('myImage');


function checkFileType(file, cb){

  const filetypes = /jpeg|jpg|png|gif/;

  const extname = filetypes.test(path.extname(file.originalname).toLowerCase());

  const mimetype = filetypes.test(file.mimetype);

  if(mimetype && extname){
    return cb(null,true);
  } else {
    cb('Error: Images Only!');
  }
}

1 个答案:

答案 0 :(得分:-3)

Multer不支持上载功能之外的“ req.file.filename”。作为文件名,原始名称,字段名称等是multer的内置API。它仅限于上传功能。

现在,如果您要在数据库中上载产品值,则只需在multer上载函数中创建一个插入函数。