将远程文件读取到Duplex NodeJS流中,然后将流数据写入表单数据上传中

时间:2019-05-17 16:50:12

标签: node.js stream multipartform-data form-data

我正在从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');
    });```

0 个答案:

没有答案