大家给推荐个Nodejs FTP CLIENT模块?

大家给推荐个Nodejs FTP CLIENT模块?

官方列出来的5个, 3个更新太慢了, 其他2个试了下还没试通.

8 回复

大家给推荐个Nodejs FTP CLIENT模块?

大家好,

我在寻找一个稳定且功能丰富的 Node.js FTP 客户端模块。目前官方文档中列出了五个备选模块,但其中三个的更新频率非常低,可能已经不再维护。另外两个虽然较新,但我尝试后发现还没有完全通过我的测试。

经过一番调研,我推荐使用 generic-ftp 模块。这个模块不仅活跃度高、更新频繁,而且功能强大,易于上手。以下是一个简单的使用示例:

安装

首先,你需要安装 generic-ftp 模块。可以使用 npm 来安装:

npm install generic-ftp

示例代码

接下来是一个基本的使用示例,展示了如何连接到 FTP 服务器并执行一些常见的操作(如上传文件、列出目录内容等):

const Client = require('generic-ftp');

async function main() {
    const client = new Client();

    try {
        // 连接到 FTP 服务器
        await client.access({
            host: 'ftp.example.com',
            user: 'username',
            password: 'password'
        });

        // 列出当前目录下的所有文件
        const files = await client.list();
        console.log('Current directory files:', files);

        // 上传一个文件
        await client.uploadFrom('./local/path/to/file.txt', 'remote/path/to/file.txt');
        console.log('File uploaded successfully.');

        // 下载一个文件
        await client.downloadTo('remote/path/to/file.txt', './local/path/to/downloaded_file.txt');
        console.log('File downloaded successfully.');

    } catch (err) {
        console.error('Error occurred:', err);
    } finally {
        // 断开连接
        await client.close();
    }
}

main();

解释

  1. 安装:通过 npm 安装 generic-ftp 模块。
  2. 连接:使用 client.access() 方法连接到 FTP 服务器,并提供必要的认证信息(主机名、用户名和密码)。
  3. 列表:使用 client.list() 方法获取当前目录下的所有文件。
  4. 上传:使用 client.uploadFrom() 方法将本地文件上传到远程 FTP 服务器。
  5. 下载:使用 client.downloadTo() 方法从远程 FTP 服务器下载文件到本地。
  6. 关闭连接:最后使用 client.close() 方法断开与 FTP 服务器的连接。

希望这些信息对你有所帮助!如果你有其他问题或需要进一步的帮助,请告诉我。


刚刚看错了,以为楼主要给大家推荐FTP模块,就点进来了

node-ftp和jsftp就是我说的那2个, 昨晚试通了. 碰到的问题还是windows gbk的恶心问题, list出的名字是乱码. jsftp呢, 执行ls的时候, 服务器不支持stat时好像有bug. 等会中午再试试第一个如何中文

能分享一下 代码么,我也遇到这样类似的问题。 1、之前我有jsftp,但是遇到多文件上传的时候就报错,上传的文件要么漏掉,要么上传一半,最后只能放弃。不过有一点jsftp 对编码问题处理的很好,应该还有很对问题jsftp需要去完善。eg: var localFile1 = new Array(); localFile1.push(“d:/2/fff/1.txt===/hzm/550E8400-E29B-11D4-A716-446655440000/1.txt”); localFile1.push(“d:/2/fff/2.txt===/hzm/550E8400-E29B-11D4-A716-446655440000/2.txt”); localFile1.push(“d:/2/fff/3.txt===/hzm/550E8400-E29B-11D4-A716-446655440000/3.txt”); localFile1.push(“d:/2/fff/4.txt===/hzm/550E8400-E29B-11D4-A716-446655440000/4.txt”); localFile1.push(“d:/2/fff/5.txt===/hzm/550E8400-E29B-11D4-A716-446655440000/5.txt”); localFile1.push(“d:/2/fff/6.txt===/hzm/550E8400-E29B-11D4-A716-446655440000/6.txt”); function uploadOneFile(num){ console.log(localFile1[num]); Ftp1.put(localFile1[num].split("===")[0],localFile1[num].split("===")[1], function(hadError,socket) { console.log(socket); num++; if(num!=localFile1.length)uploadOneFile(num); }); } 2、node ftp 这个老外并没有帮我们考虑编码,只能自己解决了,希望遇到这样问题的哥们分享解决方案!

楼主8年过去,能发一下改进方案吗?或者有没有新的ftp node工具替代的。

当然可以。针对这个问题,我推荐使用 node-ftp 这个模块。它是一个简单且功能强大的 FTP 客户端库,能够满足大多数 FTP 操作的需求。以下是使用 node-ftp 的基本示例:

安装

首先,你需要安装 node-ftp 模块。你可以通过 npm(Node 包管理器)来安装:

npm install ftp

示例代码

以下是一些常用的 FTP 操作示例,包括连接到 FTP 服务器、上传文件、下载文件以及删除文件。

连接到 FTP 服务器

const Client = require('ftp');

const client = new Client();

client.on('ready', () => {
    console.log("FTP server connection established successfully.");
});

client.connect({
    host: 'ftp.example.com',
    user: 'username',
    password: 'password'
});

上传文件

client.put('./local/path/to/file.txt', '/remote/path/to/destination/file.txt', (err) => {
    if (err) throw err;
    console.log('File uploaded successfully.');
    client.end();
});

下载文件

client.get('/remote/path/to/source/file.txt', (stream) => {
    stream.once('close', () => client.end());
    stream.pipe(fs.createWriteStream('./local/path/to/destination/file.txt'));
});

删除文件

client.delete('/remote/path/to/source/file.txt', (err) => {
    if (err) throw err;
    console.log('File deleted successfully.');
    client.end();
});

结束会话

在完成所有操作后,记得调用 client.end() 来关闭与 FTP 服务器的连接。

以上就是使用 node-ftp 模块进行一些基本 FTP 操作的方法。如果你需要更高级的功能,可以查阅 node-ftp 的官方文档以获取更多信息。希望这些示例对你有所帮助!

回到顶部