我正在尝试使用NestJS Streaming Files technique流式传输CSV文件,但请求似乎被卡住了。我错过了什么吗?
示例代码片段:
import {StreamableFile} from '@nestjs/common';
import * as fs from 'fs';
@Get('csv')
csvStream(
@Req() req: Request,
@Res() res: Response,
): StreamableFile {
const file = 'test.csv';
const readStream = fs.createReadStream(file);
readStream.on('data', (chunk) => console.log(chunk)); <--- the data log gets printed
readStream.on('finish', () => console.log('done'));
return new StreamableFile(readStream);
}
打印数据日志(检查语句-readStream.on('data', (chunk) => console.log(chunk))
),输出如下所示:
<Buffer 23 4a 45 67 11 97 ... 1022 more bytes>
并且请求停留在该状态。
2条答案
按热度按时间7ivaypg91#
以下对我很有效,在本地......
请注意
{ passthrough: true }
。这是我得到回复的原因,所以看起来很重要!!!efzxgjgh2#
{ passthrough: true }
是必需的,因为StreamableFile
是一个自定义对象,因此需要显式地将其传递给下一个中间件--它不负责向客户机发送响应。