我的Hapi服务器上有一个端点,该端点生成一个(有时)大的zip文件。
我想将该文件返回到前端,但是我似乎无法弄清楚如何在当前(18)版本的Hapi中实现该功能。最近对MAJOR api进行了一些更改,我可以找到的所有示例都完全过时了。
一些编写测试zip的代码如下:
handler: async (request, h) => {
let zip = new JSZip();
zip.file('test.txt', 'derp derp');
let stream = zip.generateNodeStream({streamFiles:true})
.pipe(fs.createWriteStream('out.zip'))
.on('finish', function () {
// JSZip generates a readable stream with a "end" event,
// but is piped here in a writable stream which emits a "finish" event.
console.log("out.zip written.");
});
但我似乎无法弄清楚该怎么办。到目前为止,我已经尝试了以下所有方法:
// vanilla hapi
return zip;
// from Inert:
return h.file(zip);
// from Toys
return Toys.stream(zip);
// vanilla Hapi, take 2:
return h.reply(zip).type('application/zip');
但是没有运气。理想情况下,我希望它在构建文件时进行流传输,我已经看到了很多人在做的例子,但是它们都是Hapi的过时版本或完全是另一个框架。
谢谢!