@dmitriyivvv

Как избавиться от ошибки при скачивании нескольких файлов через sftp?

Я пытаюсь скачать несколько файлов с моего ftp сервера. Для небольших файлов все работает отлично, но если файлы "большие" (4мб в моем случае) то возникает следующая ошибка:

grabFile was called
connected
get finished
grabFile was called
connected
(node:7112) UnhandledPromiseRejectionWarning: Error: sftp.get: Received more data than requested /test/file2.csv
    at Object.formatError (/home/zendor/untitled_1/node_modules/ssh2-sftp-client/src/utils.js:57:18)
    at ReadStream.<anonymous> (/home/zendor/untitled_1/node_modules/ssh2-sftp-client/src/index.js:310:20)
    at ReadStream.emit (events.js:209:13)
    at /home/zendor/untitled_1/node_modules/ssh2-streams/lib/sftp.js:2843:12
    at cb (/home/zendor/untitled_1/node_modules/ssh2-streams/lib/sftp.js:901:16)
    at SFTPStream._transform (/home/zendor/untitled_1/node_modules/ssh2-streams/lib/sftp.js:444:17)
    at SFTPStream.Transform._read (_stream_transform.js:189:10)
    at SFTPStream._read (/home/zendor/untitled_1/node_modules/ssh2-streams/lib/sftp.js:183:15)
    at SFTPStream.Transform._write (_stream_transform.js:177:12)
    at doWrite (_stream_writable.js:428:12)
(node:7112) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:7112) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.


Даже в упрощенной реализации до этой, всеравно возникает та же ошибка:

import SftpClient from 'ssh2-sftp-client';

const grabFile = (path) => {
  console.log('grabFile was called');
  const client = new SftpClient();
  return client.connect({
    username: 'login',
    password: 'pass',
    host: 'ftp',
  }).then(() => {
    console.log('connected');
    return client.get(path, `${Math.random()}.txt`);
  }).then(res => {
    console.log('get finished');
    return client.end();
  });
};

grabFile('/test/file1.csv').then(_ => grabFile('/test/file2.csv')).then(_ => console.log('done!'));


Первый файл успешно создается на моем компьютере и полностью скачен. Второй создается но процентах на ~5 возникает эта ошибка. В чем может быть проблема?
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Karpion
Я ничего не понял. Такое ощущение, что надо повторно инициализировать что-то для каждого файла.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы