HapiJS v18:返回一个zip文件/流

时间:2019-05-23 16:08:46

标签: zip zipfile hapijs

我的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的过时版本或完全是另一个框架。

谢谢!

0 个答案:

没有答案