https://www.npmjs.com/package/jsftp

const jsftp = require("jsftp");

const Ftp = new jsftp({
  host: "myserver.com",
  port: 3331, // defaults to 21
  user: "user", // defaults to "anonymous"
  pass: "1234" // defaults to "@anonymous"
});

jsftp 允许您以对象中方法的形式访问 FTP 协议的所有原始命令Ftp。它还为需要复杂命令链的操作(例如上传和检索文件、被动操作)提供了几种方便的方法,如下所示。

当原始命令成功时,它们总是将服务器的响应以包含两个属性的对象的形式传递给回调: ,code它是 FTP 操作的响应代码,以及text,它是响应的完整文本。

可以通过以下形式访问原始(或本机)命令Ftp.raw(command, params, callback)

因此,像这样的命令QUIT将被调用:

Ftp.raw("quit", (err, data) => {
  if (err) {
    return console.error(err);
  }

  console.log("Bye!");
});

和一个像MKD(make directory) 这样接受参数的命令,看起来像这样:

Ftp.raw("mkd", "/new_dir", (err, data) => {
  if (err) {
    return console.error(err);
  }
  console.log(data.text); // Show the FTP response text to the user
  console.log(data.code); // Show the FTP response code to the user
});

API和例子

new Ftp(options))

options 是具有以下属性的对象:

{
  host: 'localhost', // Host name for the current FTP server.
  port: 3333, // Port number for the current FTP server (defaults to 21).
  user: 'user', // Username
  pass: 'pass', // Password
  createSocket: ({port, host}, firstAction) => {
    return net.createConnection({port, host}, firstAction);
  }, // function that creates the socket, default uses net.createConnection
}

options.createSocket 可用于实现 ftp 套接字的代理,例如 socksv5

const {SocksClient} = require('socks');
const ftp = new Ffp({
  host: 'localhost',
  port: 3333,
  user: 'user',
  pass: 'password',
  createSocket: ({port, host}, firstAction) => {
    return SocksClient.createConnection({
      proxy: {
        ipaddress: '159.203.75.200'
        port: 1080,
        type: 5
      },

      command: 'connect',

      destination: {
        host,
        port
      }
    })
  }
})
Creates a new Ftp instance.

https://www.npmjs.com/package/jsftp?activeTab=readme

作者:Jeebiz  创建时间:2023-03-30 09:11
最后编辑:Jeebiz  更新时间:2024-11-05 14:07