Не удается загрузить большой файл из SFTP с помощью узла js - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь загрузить файл 4 ГБ из SFTP, используя узел 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 или нет

1 Ответ

0 голосов
/ 20 июня 2019

я смог решить проблему. Основные проблемы: 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

чтобы мой код помог мне

...