node.js输出流作为下载

时间:2017-06-21 09:12:34

标签: node.js express download stream response

我实现了一种下载文件的方法,而不是将它们保存在磁盘上...使用officegen包为npm:

var documentObject = officegen('docx')
// fill with data
// download via express
res.setHeader('content-type', 'contentType1')
res.setHeader('content-disposition', 'attachment; filename=file1.docx')
documentObject.generate(res)

这是我的下载...它适用于此文件格式。

但我现在要做的是,添加其他文件类型供下载,例如.txt:

var writer = new streams.WritableStream()
writer.write('some text')

var reader = new streams.ReadableStream();
var output = reader.pipe(this.writer)

res.send(output)

txt文件被下载...但是当我打开它时,我可以看到内容是一个长json({" _writableState":{" highWaterMark":... )

任何人都可以帮我解决这个问题吗?

问候和感谢

我正在使用来自:

的流
https://www.npmjs.com/package/memory-streams

1 个答案:

答案 0 :(得分:2)

假设您正在使用标准node.js HTTP响应对象或express.js(扩展标准响应类),那么您的res对象已经是WriteableStream的实例,并且你应该能够直接管道:

reader.pipe(res);