Считайте удаленный файл в поток Duplex NodeJS, затем запишите данные потока в загрузку данных формы - PullRequest
1 голос
/ 17 мая 2019

Я читаю из удаленного файла на SFTP-сервере. Метод чтения файла принимает записываемый поток и записывает данные файла в этот поток перед возвратом.

После завершения я передаю этот поток в form.append, используемый библиотекой данных формы, для загрузки данных этого файла в API.

Поток объявлен так:

const stream = new duplex({
    write(chunk, encoding, callback) {
      console.log('wrote chunk')
      callback();
    },
    read() {  
        console.log(`Read method called`)
      }
})

Когда метод записи вызывается во время доступа SFTP, «записанные чанки» вызываются несколько раз. Когда вызывается выгрузка файла с использованием данных формы, вызывается метод чтения с одного раза. После вызова HTTP-запрос никогда не завершается.

Подозреваю, что моя реализация метода чтения в дуплексном потоке неверна, и полные данные файла никогда не читаются должным образом из потока.

Есть ли способ, которым я могу проверить, в чем моя проблема, или я в корне неправильно понимаю, как работают потоки?

Я пытался добавить следующее в дуплексный поток перед его передачей в функцию data-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');
    });```
...