【发布时间】:2017-10-20 05:47:26
【问题描述】:
我正在尝试使用 multer 进行文件上传。上传正确,但问题是我只想上传 .avi 文件,并且任何文件都被接受和上传。 我已经使用 fileFilter 设置了 multer 配置,但似乎它不起作用或被忽略。
这是我的代码:
const mongoose = require('mongoose');
const multer = require('multer');
const uuidV4 = require('uuid/v4');
const Video = require('../models/videoModel');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads')
},
filename: function (req, file, cb) {
const newName = uuidV4();
const extension = file.mimetype.split('/')[1];
cb(null, newName +`.${extension}`)
},
fileFilter: function(req, file, cb){
if(file.mimetype !== 'video/avi'){
return cb(null, false, new Error('goes wrong on the mimetype'));
}
cb(null, true);
}
})
var upload = multer({ storage: storage });
exports.uploadVideo = upload.single('video');
exports.CreateVideo = async (req, res, next) => {
const filePath = req.file.filename;
const video = await Video.create({title:req.body.title, path: filePath});
console.log(video);
};
exports.Home = (req, res) =>{
res.render('index');
};
【问题讨论】:
-
您可以尝试将
return cb(null, false, new Error('goes wrong on the mimetype'));更改为return cb(new Error('wrong mimetype'))吗?
标签: node.js mongodb express multer