我正在对磁盘上的文件执行不同的操作,例如解密和解压缩。我想将此流作为响应发送到我的主模块中。
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不支持进一步的管道传递。
如果有人可以帮助我弄清楚这里出了什么问题,我会很高兴。