我正在从SFTP服务器上的远程文件中读取。读取文件的方法采用可写的流,并在返回之前将文件数据写入该流。
完成后,我将此流传递给表单数据库使用的form.append,以便将该文件数据上传到API。
像这样声明流:
const stream = new duplex({
write(chunk, encoding, callback) {
console.log('wrote chunk')
callback();
},
read() {
console.log(`Read method called`)
}
})
在SFTP访问期间调用write方法时,“写入块”被多次调用。调用使用表单数据上传文件时,将调用一次“调用读方法”。调用之后,HTTP请求将永远不会完成。
怀疑我在Duplex流上实现read方法是错误的,并且从未从流中正确读取完整文件数据。
有没有一种方法可以验证我的问题所在,还是从根本上误解了流的运行方式?
我曾尝试将以下内容添加到Duplex流中,然后再传递给form-data函数,但从未调用过。
stream.on('data', () => {
console.log(`Read bytes of data.`);
});
stream.on('end', () => {
console.log('There will be no more data.');
});
stream.on('error', () => {
console.log('error');
});```