0
Betrachten Sie die folgende eher trivial Middleware:Proper Sende Datei mit NodeJS
(req, res, next) => {
const stream = fs.createReadStream(req.filePath)
await new Promise((resolve, reject) => stream
.on('error', reject)
.on('end', resolve)
.pipe(res, { end: false })
.on('error', reject)
// 'close' is emitted if client prematurely disconnects.
.on('close', resolve)
res.end()
}
Es gibt ein paar Probleme, die ich nicht sicher bin, wie zu handhaben:
- Wenn res bereits emittiert ‚close‘ vor Diese Middleware läuft es wird stecken bleiben.
- Wenn res
close
odererror
ausstrahlt, wie wird der Quelldatenstrom bereinigt?autoClose
wird nur unterend
ausgeführt, das nur ausgeführt wird, wenn alle Daten gelesen wurden. Wenn das Ziel jedoch fehlschlägt, wie wird es an die Quelle weitergegeben? Sollte ich immerdestroy
auf dem Quell-Stream aufrufen?