我正在测试流上传和下载文件,下面是我真正简单的文件下载路径,解压缩我的压缩文件并通过流发送:
app.get('/file', (req, res) => {
fs.createReadStream('./upload/compress_aurelien-boquet.pdf')
.pipe(unzip)
.pipe(res);
});
我正在使用快递4.15.2 btw。
当我尝试这条路线时,它第一次工作正常,并在我的浏览器上显示pdf,但如果我刷新页面,那么我的服务器会收到此错误:
events.js:163
throw er; // Unhandled 'error' event
^
Error: write after end
at writeAfterEnd (_stream_writable.js:191:12)
at Unzip.Writable.write (_stream_writable.js:238:5)
at ReadStream.ondata (_stream_readable.js:557:20)
at emitOne (events.js:96:13)
at ReadStream.emit (events.js:191:7)
at readableAddChunk (_stream_readable.js:178:18)
at ReadStream.Readable.push (_stream_readable.js:136:10)
at onread (fs.js:1938:12)
at FSReqWrap.wrapper [as oncomplete] (fs.js:629:17)
我想知道发生了什么事?
答案 0 :(得分:2)
我的坏,是使用zlib库来gzip和解压缩文件,但我忘了“zlib.createGzip”和“zlib.createUnzip”返回一个流,所以我重用已经结束的流导致我'写完后错误'
我正在做的坏事:
app.get('/file', (req, res) => {
fs.createReadStream('./upload/compress_aurelien-boquet.pdf')
.pipe(zlib.createGunzip())
.pipe(res);
});
要做的好事:
<script src="vendor/61345/js/script.js"></script>