1
私はファイルをアップロードしようとしています。アップロードはOKです!問題は、私がfileFitlerの処理に従って受け入れられないファイルをアップロードしようとするときです。私はコンソールで何らかのエラーを受けたり、ユーザーをバックページにリダイレクトしたいのですが、ブラウザでエラーが発生しました。Express - multer fileFilterエラー処理
しかし、私が受け入れている拡張機能をアップロードすると、OKになります!
はここに私のコードです:
const mongoose = require('mongoose');
const multer = require('multer');
const uuidV4 = require('uuid/v4');
const Video = require('../models/videoModel');
function fileFilter(req, file, cb){
const extension = file.mimetype.split('/')[0];
if(extension !== 'video'){
return cb(null, false), new Error('Something went wrong');
}
cb(null, true);
};
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}`);
}
});
var upload = multer({ storage: storage, fileFilter: fileFilter});
exports.uploadVideo = upload.single('file'); // the single param should be the name of the file input form
exports.CreateVideo = (req, res) => {
const newVideo = {title: req.body.title, path: req.file.filename};
Video.create(newVideo, function(err, result){
if(err){
console.log('Não foi possível realizar o upload do vídeo.' + err);
}
else{
console.log('Vídeo upado com sucesso!');
res.redirect('/');
console.log(result);
}
})
};
exports.Home = (req, res) =>{
res.render('index');
};
exports.ShowVideos = (req, res) =>{
Video.find({}, function(err, result){
if(err){
res.redirect('/');
}
else{
res.render('video', {videoData:result});
}
})
};
あなたは 'uploadVideo'を呼び出すルートを置くことができますか? –
route.post( '/ upload'、videoController.uploadVideo、videoController.CreateVideo); –