Я читаю из удаленного файла на 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');
});```