FTP 客户端在 Node.js 上用于 Windows 服务器

FTP client on Node.js for Windows Server

有现货

任务

有必要使用 Node.js 平台与 Windows 服务器建立 FTP 连接,剪切特定文件夹(以及位于其中的文件夹和文件)并将其粘贴到服务器上的特定目录中 运行 Linux.

问题

是否可以实现描述的任务?如果是,使用什么 NPM 包和/或什么程序代码适合解决问题?

您可以使用来自 npm

ssh2-sftp-client
const Client = require('ssh2-sftp-client');

const config = {
  host: 'example.com',
  port: 22,
  username: 'red-don',
  password: 'my-secret'
};

let sftp = new Client;

sftp.connect(config)
  .then(() => {
    return sftp.list('/path/to/remote/dir');
  })
  .then(async data => {
    console.log(data);
    for(let file of data) {
        //you can check if file is directory or file
        if(file.type == 'd') {
           //recursively read files
        }else {
            //download file
            const remoteFilename = '/path/to/remote/dir/' + data.name;
            const localFilename = '/path/to/local/files/' + data.name;
            sftp.get(remoteFilename).then((stream) => {
                stream.pipe(fs.createWriteStream(localFilename));
            });`enter code here`
        }
    } 
    //delete directory recursively after all files are download 
    return client.rmdir(/path/to/remote/dir, true); 
  })
  .then(() => {
    sftp.end();
  })
  .catch(err => {
    console.error(err.message);
  });
const ftp = require('basic-ftp');

ftp_connect()
 
async function ftp_connect() {
    const client = new ftp.Client();
    client.ftp.verbose = true;
    try {
        await client.access({
            host: 'host',
            port: '21',
            user: 'domain\username',
            password: 'password',
            secure: false
        })
        console.log(await client.list())
    }
    catch(err) {
        console.log(err)
    }
    client.close()
}