【发布时间】:2017-04-02 21:58:51
【问题描述】:
我想使用 Node/Express 服务器将文件作为附件流式传输到客户端。我想从客户端向 /download 端点发出异步请求,然后将通过 API 代理接收到的对象作为可下载文件提供给客户端(类似于 res.attachment(filename); res.send(body); 的行为方式)。
例如:
fetch(new Request('/download'))
.then(() => console.log('download complete'))
app.get('/download', (req, res, next) => {
// Request to external API
request(config, (error, response, body) => {
const jsonToSend = JSON.parse(body);
res.download(jsonToSend, 'filename.json');
})
});
这不起作用,因为res.download() 只接受文件的路径。我想从内存中的对象发送响应。现有的 Node/Express API 怎么可能做到这一点?
设置适当的标头也不会触发下载:
res.setHeader('Content-disposition', 'attachment; filename=filename.json');
res.setHeader('Content-type', 'application/json');
res.send({some: 'json'});
【问题讨论】: