Не удалось загрузить большой файл с SFTP с помощью узла js

Я пытаюсь загрузить файл размером 4 ГБ с SFTP, используя node js, используя модуль ssh2-sftp-client. Моя основная проблема заключается в том, что около 40% (если не быть точным, иногда также 45) файла загружаются после того, как загрузка останавливается, при этом не возникает ошибка, и при загрузке не отображается какой-либо прогресс.

Я пробовал другую систему, используя другой Интернет, и столкнулся с той же проблемой. Пожалуйста, помогите, я сильно пострадал в этом вопросе.

let Client = require('ssh2-sftp-client');
let sftp = new Client();
function DownloadFromSFTP(){
sftp.connect({
host: '127.0.0.1',
port: '8080',
username: 'username',
password: '******'
}).then(() => {
return sftp.list('/');
}).then((data) => {
if(data.length>0){
var remotepath='/'+data.name;
var localpath=="/path/to/local/folder"+data.name;
sftp.fastGet(remotePath, localPath, {
concurrency:640,
Chunksize:32768},function(err){
if(err) throw err
console.log("downloaded successfully")
});
}
}).catch((err) => {
console.log(err, 'catch error');
});
}

если файл загружен не полностью, то он должен показать ошибку или если он отключен от sftp, как проверить, подключен ли ftp или нет


person bab951    schedule 19.06.2019    source источник
comment
Это может быть или не быть проблемой sftp. Это может быть проблема с локальной файловой системой ... Это может быть проблема с удаленным сервером .... работает ли он с файлами размером 2 ГБ?   -  person Ahmed Masud    schedule 19.06.2019
comment
когда я загружаю тот же файл с sftp, используя filezilla, он загружается без проблем. проблема возникает только тогда, когда я пытаюсь загрузить с помощью кода. если я пытаюсь загрузить небольшой файл, он работает очень хорошо   -  person bab951    schedule 19.06.2019


Ответы (1)


я смог решить проблему. Основные проблемы, которые возникали, заключались в том, что SFTP перестает отвечать, и мои сети переходят в 0, после чего обновляется код.

    let Client = require('ssh2-sftp-client');
    let sftp = new Client();
    function DownloadFromSFTP(){
    sftp.connect({
    host: '127.0.0.1',
    port: '8080',
    username: 'username',
    password: '******',
keepaliveInterval :2000,
keepaliveCountMax :20
    }).then(() => {
    return sftp.list('/');
    }).then((data) => {
    if(data.length>0){
    var remotepath='/'+data.name;
    var localpath=="/path/to/local/folder"+data.name;
    sftp.fastGet(remotePath, localPath, {
    concurrency:640,
    Chunksize:32768},function(err){
    if(err) throw err
    console.log("downloaded successfully")
    });
    }
    }).catch((err) => {
    console.log(err, 'catch error');
    });
    }

добавление

 keepaliveInterval :2000,
    keepaliveCountMax :20

мой код помог мне

person bab951    schedule 20.06.2019
comment
Есть ли способ ускорить загрузку, используя другие методы, спасибо. - person NMAK; 22.06.2021