Ich benutze Node.js mit Express. Ich versuche eine Datei zu löschen, nachdem ich sie mit Express js an den Client gesendet habe.Löschen der Datei in node.js funktioniert nicht
function deleteFile (file) {
fs.unlink(file, function (err) {
if (err) {
logger.error(err);
}
});
}
app.get("/deleteFileAfterDownload", function (req, res){
var fileName = "a.pdf"
var stream = fs.createReadStream(fileName);
var streamClosed = false;
req.on('end',function(){
if (!streamClosed){
stream.emit('close');
// I tried stream.destroy() but that is also not working
}
});
stream.on('close', function() {
streamClosed = true;
deleteFile(fileName);
});
req.on('data', function(){});
stream.pipe(res);
});
Aber die Datei wird nicht gelöscht. Es scheint, dass der Prozess immer noch Datei verwendet, weil die Datei gelöscht wird, nachdem ich den Prozess beendet habe.
Kann mir jemand sagen warum? Wenn ich es falsch mache, sag mir bitte einen guten Weg.
unlink() löscht einen Namen aus dem Dateisystem. Wenn dieser Name der letzte Link zu einer Datei ist und keine Prozesse die Datei geöffnet haben, wird die Datei gelöscht und der verwendete Speicherplatz wird für die Wiederverwendung verfügbar gemacht. Quelle: http://man7.org/linux/man-pages/man2/unlink.2.html – n32303