【发布时间】:2020-04-07 20:39:11
【问题描述】:
我想使用 npm 包 multer 将用户个人资料图片上传到服务器。所以我配置 multer 如下所示:
var multer = require('multer');
var storage = multer.diskStorage({
//Setting up destination and filename for uploads
destination: function (req, file, cb) {
cb(null, 'uploads/');
},
filename: function (req, file, cb) {
cb(null, Date.now() + file.originalname);
}
});
var upload = multer({
storage: storage,
limits:{
fieldSize: 1024*1024*6,
}
});
我还有一个用户模型,用于存储电子邮件、密码和图片路径:
var makerSchema = new mongoose.Schema({
email:{
type:String,
validate: [validator.isEmail, "Please enter a valid E-mail!" ]
},
password:{
type:String,
required:[true, "Password is a required field"],
minlength: 6,
maxlength:1000
},
imagePath:{
type:String
}
},{
timestamps:true
})
以下是我的路线:
router.post('/maker',upload.single('makerImage'), async (req, res) => {
//Check if image is uploaded(gives no error though)
var imagePath = "";
if (req.file) {
imagePath=req.file.path;
}
//creating body for object
var data = {
email: req.body.email,
password: req.body.password,
imagePath
}
try {
var maker = new Maker(data);
await maker.save();
res.status(200).send();
} catch (error) {
res.send(error);
}
})
现在当我输入错误的电子邮件或密码时,虽然没有创建用户。但是无论如何,文件都会上传到上传文件夹。我该如何解决这个问题?
【问题讨论】:
标签: node.js express post file-upload multer