例如 node.js ftp 服务器?

Example node.js ftp server?

我需要创建一个 node.js 应用程序连接到此 ftp 服务器并从此目录下载文件:

ftp://www.ngs.noaa.gov/cors/rinex/2021/143/nynb

我已经尝试遵循 ftp npm 包文档,但我觉得我做错了一些可怕的事情:

import Client from "ftp";

/**
 * https://github.com/mscdex/node-ftp
 */

const c = new Client();

c.on("ready", function () {
    c.get(
        "ftp://www.ngs.noaa.gov/cors/rinex/2021/143/nynb",
        (error, stream) => {
            if (error) throw error;
            console.log(`stream`, stream);
            stream.once("close", function () {
                c.end();
            });
        }
    );
});

// connect to localhost:21 as anonymous
c.connect();

当我 运行 npm run devnodemon 我得到:

Error: connect ECONNREFUSED 127.0.0.1:21
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16)
[nodemon] app crashed - waiting for file changes before starting...

有人可以帮忙吗?我完全被难住了。

是否有人可以向我展示一个如何连接到此远程 ftp 服务器的小示例?

有几点:

  • 您正在使用 c.connect(); 连接到本地 ftp。您需要连接到 www.ngs.noaa.gov 才能从那里下载文件。
  • 这个路径cors/rinex/2021/143/nynb是远程主机上的一个目录。 c.get 不行,您需要列出目录中的所有文件,然后逐个下载它们。

下面的代码连接到远程服务器并列出目录中的所有文件

const Client = require('ftp');
const fs = require("fs");
const c = new Client();

c.on('ready', function () {
    c.list( "/cors/rinex/2021/143/nynb", function (err, list) {
        if (err) throw err;
        console.dir(list);
    });
});

c.connect({
    host: "www.ngs.noaa.gov",
});