无法读取未定义的nodejs mongoose的属性'originalname'

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

我正在尝试使用mongooseexpressmulter存储图像但是当我用邮差测试时它总是会出现以下错误:

TypeError:无法读取未定义的属性“originalname”

var express=require("express")
var  router= express.Router();
var app=express()
var artisanModel=require("../models/artisanModel")
var fs = require('fs')
const multer = require('multer');
const upload = multer({dest: __dirname + '/uploads/images'});

router.post('/add', upload.single('image'), function (req, res) {
  console.log(req.file.originalname)
  var file = __dirname + '/uploads/' + req.file.originalname;
  fs.readFile(req.file.path, function (err, data) {
    fs.writeFile(file, data, function (err) {
      if (err) {
        console.error(err);
        var response = {
          message: 'Sorry, file couldn\'t be uploaded.',
          filename: req.file.originalname
        };
      } else {
        response = {
          message: 'File uploaded successfully',
          filename: req.file.originalname
        };


        artisan = new artisanModel({
          firstName: req.body.firstName,
          lastName: req.body.lastName,
          email: req.body.email,
          password: req.body.password,
          tel: req.body.tel,
          image:  req.file.originalname

        })

        artisan.save(function (err) {
          if (err) {
            res.send({'State': 'Not Ok', 'msg': 'err' + err})
          }
          else {
            res.send({'State': 'Okay', 'msg': 'added'})
          }
        });
      }``
    });
  })
})
node.js angular express mongoose
2个回答
0
投票

//模型

//Require Mongoose
var mongoose = require('mongoose');


//Define a schema
var Schema = mongoose.Schema;

var artisanModelSchema = new Schema({
  firstName: {type:String,
    trim:true,
    required:false},

  lastName : {
    type:    String,
    trim:true,
    required:false},
  tel : {
    type:    String,
    trim:true,
    required:false},
  adresse: {
    type:    String,
    trim:true,
    required:false},
  password: {
    type: String,
    trim: true,
    required: false
  },
  imagee:
    { dataa: Buffer, contentType: String , path : String }



});
var artisanModel=mongoose.model('artisanModel',artisanModelSchema);
module.exports=artisanModel;

0
投票

请检查multer文档,它不会处理任何不是multipart(multipart / form-data)的表单。

NOTE: Multer will not process any form which is not multipart (multipart/form-data).

https://www.npmjs.com/package/multer

检查上面链接中的第二行。

编辑

请使用邮递员将身体类型更改为表格数据并上传图像。请参阅screenshot.here

© www.soinside.com 2019 - 2024. All rights reserved.