如何从Kuzzle插件响应发送pdf文件?

时间:2019-05-29 14:17:33

标签: javascript

我将Kuzzle用作移动应用程序和多个网站的所有业务逻辑的后端。 在一个网站上,我需要下载一个包含多个报告的PDF。为了保持相同的体系结构,我想在一个自定义的Kuzzle插件中实现这一点。

插件的默认响应包装在默认的HTML响应中,如何精确定制标题发送文件?

1 个答案:

答案 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协议。