Возврат потока из модуля на экспресс-маршрут - PullRequest
0 голосов
/ 12 февраля 2019

Я выполняю различные операции с файлом на диске, например, расшифровку и разархивирование.Я хочу отправить этот поток как ответ в моем главном модуле.

server.js

app.get('/route', function(req, res) {
  let req_params = req.query;
  cryptProvider.decrypt({file: req_params.file, key: req_params.key}).pipe(res);
})

cryptProvider.js

exports.decrypt = function ({ file, key }) {
  const readInitVect = fs.createReadStream(file, { end: 15 });

  let initVect;
  readInitVect.on('data', chunk => {
    initVect = chunk;
  });

  readInitVect.on('close', () => {
    const cipherKey = crypto
      .createHash('sha256')
      .update(key)
      .digest();
    const readStream = fs.createReadStream(file, { start: 16 });
    const decipher = crypto.createDecipheriv('aes256', cipherKey, initVect);
    const unzip = zlib.createUnzip();

    return readStream
      .pipe(decipher)
      .pipe(unzip);

  })
};

Итак, я пытаюсь передать readStream из моего cryptProvider в server.js.Возвращение readStream и передача его в res, похоже, не работает, так как cryptProvider.decrypt не поддерживает дальнейшую передачу.

Я был бы рад, если бы кто-нибудь мог помочь мне выяснить, в чем здесь проблема.

...