Ich mache ein einfaches Datei-Upload-System mit multer:Wie kann die Dateigröße beim Hochladen mit Multer begrenzt werden?
var maxSize = 1 * 1000 * 1000;
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, 'public/upload');
},
filename: function (req, file, callback) {
callback(null, file.originalname);
},
onFileUploadStart: function(file, req, res){
if(req.files.file.length > maxSize) {
return false;
}
}
});
var upload = multer({ storage : storage}).single('bestand');
router.post('/upload',function(req,res){
upload(req,res,function(err) {
if(err) {
return res.end("Error uploading file.");
}
console.log(req.file);
res.redirect(req.baseUrl);
});
});
Das alles funktioniert gut und die Datei hochgeladen wird. Das einzige, was nicht funktioniert, ist die maximale Größe. Ich habe es so gemacht, dass onfileupload startet die Größe der Datei überprüft wird und wenn es zu groß ist, wird es false zurückgeben. Aber die Datei wird nur noch hochgeladen.
Es scheint, dass onFileUploadStart
überhaupt nichts tut. Ich habe versucht, console.log
etwas darin, aber nichts.
Was mache ich falsch? Wie kann ich die Dateigröße beim Hochladen mit Multer begrenzen?
Wo Sie gesehen haben, dass Sie 'false' wenn' req.files.file.length> maxSize zurückgeben müssen 'im handler des even' onFileUploadStart'? – nbro
Ein Tutorial, dem ich folgte. Aber ich nehme an, Sie sagen, das ist nicht der richtige Weg, um den Upload zu stoppen? –
Kannst du 'console.log' (vor der if-Anweisung) die Datei in demselben Handler? Was siehst du? – nbro