我将Kuzzle用作移动应用程序和多个网站的所有业务逻辑的后端。 在一个网站上,我需要下载一个包含多个报告的PDF。为了保持相同的体系结构,我想在一个自定义的Kuzzle插件中实现这一点。
插件的默认响应包装在默认的HTML响应中,如何精确定制标题发送文件?
答案 0 :(得分:0)
您可以使用Request.setResult方法来指定返回的原始有效负载并修改响应标头。
然后只需返回包含文件内容的Buffer
。
async sendPdf (request) {
const file = fs.readFileSync('./file.pdf');
request.setResult(null, {
// Tell Kuzzle that this result will contain a raw payload
raw: true,
headers: {
// Set HTTP response headers
'Content-Length': file.length.toString(),
'Content-Type': 'application/pdf',
'Content-Disposition': `attachment; filename="file.pdf"`,
'Cache-Control': 'no-cache'
}
);
return file;
}
当然,这仅适用于HTTP或WebSocket协议。