我正在尝试使用mongoose
,express
,multer
存储图像,但是当我用邮递员测试时,总是会出现以下错误:
TypeError:无法读取未定义的属性“原始名称”
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'})
}
});
}``
});
})
})
答案 0 :(得分: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;
答案 1 :(得分:0)
请检查multer文档,它不会处理任何非多部分形式(multipart / form-data)。
NOTE: Multer will not process any form which is not multipart (multipart/form-data).
https://www.npmjs.com/package/multer
检查上面链接中的第二行。
编辑