我爱平铺

NodeJS在web server中直接返回buffer(express, koa, nest.js等)

如下场景,需要直接返回base64decode后的数据,而不是调用toString,通常,这样返回是不行的:

app.get('/', function (req, res) {
    const buffer = Buffer.from('p8AuXbAKFihL9N1H4aYi7w==', 'base64');
    res.send(buffer);
});

这样直接返回一个buffer的结果是,会被序列化为数组或者其他同类对象,有点类似被调用了toString方法

如果想要直接返回buffer内容,需要构建stream

import stream from 'stream';

app.get('/', function (req, res) {
    const buffer = Buffer.from('p8AuXbAKFihL9N1H4aYi7w==', 'base64');
    const bufferStream = new stream.PassThrough();
    bufferStream.end(buffer);
    bufferStream.pipe(res);
});

如果是在NestJS中:

@Get()
async vodDecrypt(@Res() res: any) {
    const buffer = Buffer.from('p8AuXbAKFihL9N1H4aYi7w==', 'base64');
    const bufferStream = new stream.PassThrough();
    bufferStream.end(buffer);
    bufferStream.pipe(res);
}

文章原始链接:https://sijie.wang/posts/node-response-buffer/

本站文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请保留原始链接