HapiJS v18: возврат zip-файла / потока - PullRequest
0 голосов
/ 23 мая 2019

У меня есть конечная точка на моем сервере Hapi, которая создает (иногда) большой zip-файл.

Я хочу вернуть этот файл обратно во внешний интерфейс, но я не могу понять, как заставить это работать в текущей (18) версии Hapi.В последнее время произошли некоторые основные изменения 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, либо вообще фреймворком.

Заранее спасибо!

...