如果我查询盒子 REST API 并获得可读流,最好的处理方式是什么?如何将其发送到浏览器?(免责声明:我对流和缓冲区都很陌生,所以这段代码有些理论性)
你可以将 readStream 传递给响应并让浏览器处理它吗?还是必须将块流式传输到缓冲区,然后再发送缓冲区?
你可以将 readStream 传递给响应并让浏览器处理它吗?还是必须将块流式传输到缓冲区,然后再发送缓冲区?
export function getFileStream(req, res) {
const fileId = req.params.fileId;
console.log('fileId', fileId);
req.sdk.files.getReadStream(fileId, null, (err, stream) => {
if (err) {
console.log('error', err);
return res.status(500).send(err);
}
res.type('application/octet-stream');
console.log('stream', stream);
return res.status(200).send(stream);
});
}
^^会起作用吗?还是需要像这样做些什么:
export function downloadFile(req, res) {
const fileId = req.params.fileId;
console.log('fileId', fileId);
req.sdk.files.getReadStream(fileId, null, (err, stream) => {
if (err) {
console.log('error', err);
return res.status(500).send(err);
}
const buffers = [];
const document = new Buffer();
console.log('stream', stream);
stream.on('data', (chunk) => {
buffers.push(buffer);
})
.on('end', function(){
const finalBuffer = Buffer.concat(buffers);
return res.status(200).send(finalBuffer);
});
});
}