Meine nodejs-Anwendung akzeptiert Datei-Uploads von Benutzern mit der von Express Middleware erzwungenen Berechtigung und verwendet multer.So bereinigen Sie temporäre Dateien mithilfe von multer
Eine typische Route authentifiziert, prüft, ob der Benutzer erlaubt ist, dann funktioniert der Import, z.B .:
router.post('/:id/import', passport.authenticate('jwt', { session: false }), permit('admin'), function(req, res, next) {
MyClass.doImport(req.file.path).then(function(result) {
res.json(result);
}).catch(function(error) {
res.status(500).json(error);
});
});
Wenn kein Fehler ist, funktioniert dies sehr gut, und die Import-Funktion löscht die Datei. Im Falle eines Fehlers (wie ein ungültiger oder unzulässiger Benutzer) wird die hochgeladene Datei erstellt und verbleibt auf der Festplatte.
Ich möchte keine Dateien auf der Festplatte erstellen, bis alle die Erlaubnis Middleware erfolgreich ausgeführt wurde. Ich habe multer als sehr Ende der Kette versucht, mit, d.h .:
var app = express();
app.use(// ...
app.use(passport.initialize());
app.use(multer({dest:'./tmp/'}).single('file'));
aber auf einem Auth Fehler, habe ich noch mit einer Datei in tmp enden.
Wie kann ich vermeiden, eine Datei auf der Festplatte zu erstellen, bis alle anderen Middleware-Pässe bestanden haben?
Wenn das nicht möglich ist, kann ich eine Middleware-Funktion hinzufügen, die nur ausgeführt wird, wenn es einen Dateianhang gibt und ein Upstream-Fehler vorliegt?
Das hat es getan. Vielen Dank! Ich habe vergessen, dass diese Router-Methoden wirklich nur die Enden der Middleware-Kette sind. – user1272965