2017-10-13 1 views
-1

Ich benutze diesen Code "Multer", um Dateien auf meinen Server hochzuladen. Selbst wenn ich die Limit-Dateigröße habe, ignoriere ich sie einfach und lade die Datei hoch.Nodejs - Catch filesize Fehler mit Multer

const multer = require("multer"); 
const path = require("path"); 
const storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, "uploads/"); 
    }, 
    limits: { 
     fileSize: 1024 * 1024 
    } 
}); 

const upload = multer(
{ 
    storage: storage 
} 
).single("file"); 

router.post("/files/postfile", function (req: any, res: any, next) { 

    upload(req, res, function (err) { 
     if (err) { 
      return res.json({error: err}); 
     } 
     return res.json({success: true}); 
    }); 

}); 

Antwort

1
const upload = multer({ 
    storage: storage, 
    limits: { 
     fileSize: 1024 * 1024 
    } 
}).single("file"); 

entfernen die limits von multer.diskStorage

+0

Danke ...... Ich warte 5 Minuten (stackoverflow Regeln), um Ihnen die Überprüfung für Ihre Antwort .... – Michalis

+0

Froh, dass es helfen :) –

0

Ihr Code sehr ineffizient ist.

const multer = require("multer"); 
const path = require("path"); 
const storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, "uploads/"); 
    } 
}); 

const upload = multer({ 
    storage: storage, 
    limits: { 
     fileSize: 1024 * 1024 
    } 
}); 

router.post("/files/postfile", upload.single("file"); function (req: any, res: any, next) { 
    // . . . . code . . . . 

}); 

von Middleware verwenden, können Sie effizienten Code schreiben ich diese Methode empfehlen. und Wenn das Dateinamenattribut beim Aufruf von multer.diskStorage() verwendet wird, können Sie den Namen chage eingeben.

destination: function (req, file, cb) { 
     cb(null, "uploads/"); 
    }, 
    filename: function(req, file, cb){ 
     cb(null, 'unique_name.jpg'); # example: timestamp, utc, etc 
    }, 
    limits: { 
     fileSize: 1024 * 1024 
    } 

Dateiname kann duplizieren.

+0

und wie kann ich den Fehler in meiner Route zu fangen ? Zuerst benutzte ich den Code wie Sie, aber ich konnte keinen Weg finden, den Fehler innerhalb der Route zu fangen. – Michalis

+0

Ich nehme dieses Beispiel von der offiziellen Website für das Erfassen von Fehlern. https://github.com/expressjs/multer#error-handling – Michalis

+0

möchten Sie Fehlerbehandlung? –

Verwandte Themen