首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ssh2-sftp客户端fastGet下载多个文件?

如何使用ssh2-sftp客户端fastGet下载多个文件?
EN

Stack Overflow用户
提问于 2020-07-08 20:08:30
回答 1查看 2K关注 0票数 0

如何使用fastGet下载多个txt文件?我的代码如下:

代码语言:javascript
复制
const Client = require('ssh2-sftp-client');
const sftp = new Client();

sftp.connect(configs)
    .then(() => {
        return sftp.list('.');
    })
    .then(files => {
        files.forEach(file => {
            if(file.name.match(/txt$/)){
                const remoteFile = // remote file dir path
                const localFile = // local file dir path
                sftp.fastGet(remoteFile, localFile).catch(err => console.log(err));
            }
        });
    })
    .catch(err => console.log(err))
    .finally(() => {
        sftp.end();
    });

我一直得到一个没有sftp连接可用的错误。我很肯定,我在这里做了一些错误的sftp.fastGet,但不知道具体从什么或从哪里开始。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-08 20:45:57

代码中似乎存在多个问题:

itself.

  • sftp.fastGet返回一个承诺,因此它是一个asynchronous,操作,以及在forEach循环中执行asynchronous操作不是一个好主意。

我建议使用以下更改更新您的代码:

代码语言:javascript
复制
sftp.connect(configs)
    .then(async () => {
        const files = await sftp.list('.');

        for(const file in files){
          if(file.name.match(/txt$/)){
            const remoteFile = // remote file dir path
            const localFile = // local file dir path
            try {
              await sftp.fastGet(remoteFile, localFile)
            }
            catch(err) { 
              console.log(err))
            };
          } 
        }
    })
    .catch(err => console.log(err))
    .finally(() => {
        sftp.end();
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62802860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档