iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >nodejs怎么连接ftp实现上传下载
  • 680
分享到

nodejs怎么连接ftp实现上传下载

2023-07-06 00:07:35 680人浏览 泡泡鱼
摘要

这篇文章主要介绍“nodejs怎么连接ftp实现上传下载”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs怎么连接ftp实现上传下载”文章能帮助大家解决问题。依赖//ftp 模块是

这篇文章主要介绍“nodejs怎么连接ftp实现上传下载”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs怎么连接ftp实现上传下载”文章能帮助大家解决问题。

依赖

//ftp 模块是目前找到的还不错的,对于ftp的基本功能都支持npm install ftp

连接ftp

const ftp = require('ftp');//连接FTPconst client = new ftp();client.on('ready',()=>{    console.log('ftp client is ready');});client.connect({    host : '***.***.***.***',    port : '****',    user : '***',    passWord : '***',    keepalive : 1000});

ftp 获取列表 list

//列出目标目录function list(dirpath){    return new Promise((resolve,reject)=>{        client.list((err,files)=>{            resolve({err : err,files : files});        })    });}async function test (){    //list 列表功能    let {err,files} = await list();    if(err){        console.log(err);        return    }    console.log(`获得文件列表:`+files.length);    console.log(files);}test();

nodejs怎么连接ftp实现上传下载

ftp 目录切换

//切换目录function cwd(dirpath){    return new Promise((resolve,reject)=>{        client.cwd(dirpath,(err,dir)=>{            resolve({err : err,dir : dir});        })    });}

FBI WARNING : 这里提醒下,在本示例中的所有代码都在同一个文件中,后面会给出完整示例代码。

有了目录切换,那么在list函数中的dirpath就可以使用啦。如下:

//列出目标目录//列出目标目录async function list(dirpath){    let {err : ea,dir } = await cwd(dirpath);    return new Promise((resolve,reject)=>{        client.list((err,files)=>{            resolve({err : err,files : files})        })    });}

ftp下载文件

//下载文件async function get(filePath){    const dirpath = path.dirname(filePath);    const fileName = path.basename(filePath);    let {err : ea,dir} = await cwd(dirpath);    return new Promise((resolve,reject)=>{        client.get(fileName,(err,rs)=>{            let ws = fs.createWriteStream(fileName);            rs.pipe(ws);            resolve({err : err});        });    });}

ftp上传文件

//将文件上传到ftp目标地址async function put(currentFile,targetFilePath){    const dirpath = path.dirname(targetFilePath);    const fileName = path.basename(targetFilePath);    const rs = fs.createReadStream(currentFile);    let {err : ea,dir} = await cwd(dirpath);//此处应对err做处理    if(ea){        return Promise.resolve({err : ea});    }    return new Promise((resolve,reject)=>{        client.put(rs,fileName,(err)=>{            resolve({err : err});        })    });}

完整代码

const ftp = require('ftp');//连接FTPconst path = require('path');const client = new ftp();const fs = require('fs');client.on('ready',()=>{    console.log('ftp client is ready');});client.on('close',()=>{    console.log('ftp client has close')});client.on('end',()=>{    console.log('ftp client has end')});client.on('error',(err)=>{    console.log('ftp client has an error : '+ JSON.stringify(err))});client.connect({    host : '***',//这个就不提供啦    port : '***',    user : '***',    password : '***',    keepalive : 1000});//列出目标目录async function list(dirpath){    let {err : ea,dir } = await cwd(dirpath);    return new Promise((resolve,reject)=>{        client.list((err,files)=>{            resolve({err : err,files : files})        })    });}//切换目录function cwd(dirpath){    return new Promise((resolve,reject)=>{        client.cwd(dirpath,(err,dir)=>{            resolve({err : err,dir : dir});        })    });}//下载文件async function get(filePath){    const dirpath = path.dirname(filePath);    const fileName = path.basename(filePath);    let {err : ea,dir} = await cwd(dirpath);    return new Promise((resolve,reject)=>{        client.get(fileName,(err,rs)=>{            let ws = fs.createWriteStream(fileName);            rs.pipe(ws);            resolve({err : err});        });    });}//将文件上传到ftp目标地址async function put(currentFile,targetFilePath){    const dirpath = path.dirname(targetFilePath);    const fileName = path.basename(targetFilePath);    const rs = fs.createReadStream(currentFile);    let {err : ea,dir} = await cwd(dirpath);//此处应对err做处理    if(ea){        return Promise.resolve({err : ea});    }    return new Promise((resolve,reject)=>{        client.put(rs,fileName,(err)=>{            resolve({err : err});        })    });}async function test (){    //list 列表功能    let {err,files} = await list('/attachment/byycampus/resource');    if(err){        console.log(err);        return    }    console.log(`获得文件列表:`+files.length);    console.log(files);    //下载文件    let {err : ea} = await get('/attachment/byycampus/resource/201812/14/201812141035222541381967.jpg');    if(ea){        console.log(ea);        return;    }    console.log('文件下载成功')    //文件上传    let {err : eb} = await put('201812141035222541381967.jpg','/attachment/a.jpg');    if(eb){        console.log(eb);        return;    }    console.log('文件上传成功')}test();

踩坑记录:

测试过程中发现,有的ftp服务器传输速度正常,而有的ftp服务器传输速度则是非常慢!慢到平均一张十几K的图片都能传十几秒的程度!经过检查发现,这类ftp是采用的被动连接模式。

对此,查找GitHub官方文档https://github.com/mscdex/node-ftp , 发现connect函数中有一个pasvTimeout选项涉及到被动连接超时设置,于是测试了一下,将上面的连接代码改成如下:

const ftp = require('ftp');//连接FTPconst client = new ftp();client.on('ready',()=>{    console.log('ftp client is ready');});client.connect({    host : '***.***.***.***',    port : '****',    user : '***',    password : '***',    keepalive : 1000,    pasvTimeout:1000});

再次测试,传输速度慢的问题得到解决!

关于“nodejs怎么连接ftp实现上传下载”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: nodejs怎么连接ftp实现上传下载

本文链接: https://www.lsjlt.com/news/356587.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • nodejs怎么连接ftp实现上传下载
    这篇文章主要介绍“nodejs怎么连接ftp实现上传下载”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs怎么连接ftp实现上传下载”文章能帮助大家解决问题。依赖//ftp 模块是...
    99+
    2023-07-06
  • nodejs连接ftp上传下载实现方法详解【附:踩坑记录】
    依赖 //ftp 模块是目前找到的还不错的,对于ftp的基本功能都支持 npm install ftp 连接ftp const ftp = require('ftp');//连接F...
    99+
    2023-05-15
    node ftp 上传 下载 client ready 连接 console
  • python实现FTP上传下载
    要求:支持多用户在线的FTP程序 要求:1、用户加密认证2、允许同时多用户登录3、每个用户有自己的家目录 ,且只能访问自己的家目录4、对用户进行磁盘配额,每个用户的可用空间不同5、允许用户在ftp server上随意切换目录6、允许用户查看...
    99+
    2023-01-31
    上传下载 python FTP
  • Java实现ftp的上传、下载
    ftp登录命令: windows环境下登录:文件管理资源的地址栏中输入“ftp://ip:port”,然后根据提示输入账号、密码。linux环境下登录:ftp ip,然后根据提示输入账号、密码,lin...
    99+
    2023-09-26
    java linux 服务器
  • Java怎么实现FTP的上传与下载功能
    这篇文章主要讲解了“Java怎么实现FTP的上传与下载功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么实现FTP的上传与下载功能”吧!JAVA操作FTP服务器,只需要创建一个F...
    99+
    2023-06-29
  • Java实现FTP上传与下载功能
    本文实例为大家分享了Java实现FTP上传与下载的具体代码,供大家参考,具体内容如下 JAVA操作FTP服务器,只需要创建一个FTPClient即可,所有的操作都封装在FTPClie...
    99+
    2024-04-02
  • Java操作FTP实现上传下载功能
    目录FTP简介FTP架构FTP数据连接模式用户认证客户端Vsftp安装与配置启动服务配置文件说明传输模式配置系统用户配置java操作ftp文件服务器1.引入依赖2.提供接口3.对提供...
    99+
    2022-11-13
    Java FTP上传下载 Java FTP上传 Java FTP下载 Java FTP
  • C#怎么使用FluentFTP实现FTP上传下载功能
    这篇文章主要介绍“C#怎么使用FluentFTP实现FTP上传下载功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#怎么使用FluentFTP实现FTP上传下载功能”文章能帮助大家解决问题。FT...
    99+
    2023-07-05
  • java实现ftp文件上传下载功能
    本文实例为大家分享了ftp实现文件上传下载的具体代码,供大家参考,具体内容如下package getUrlPic;import java.io.ByteArrayInputStream;import java.io.IOException;...
    99+
    2023-05-31
    ftp 上传 下载
  • java连接sftp服务器实现上传下载
    前言 我最初的需求是java读取远程windows服务器的文件。查了一圈,发现将远程服务器作为ftp服务器是最方便快捷的。着手准备,首先要让远程服务器提供ftp服务,再做相关配置,然后通过代码配置远程...
    99+
    2023-10-07
    java
  • Python实现连接FTP并下载文件夹
    目录第一章:连接 FTP 服务器并实现文件夹下载① 连接 FTP 服务器② 进入指定目录并显示文件信息③ 区分文件和文件夹名④ 文件夹名包含空格处理⑤ 使用递归实现:FTP服务器里的...
    99+
    2024-04-02
  • Spring FTP如何实现上传下载工具类
    这篇文章给大家分享的是有关Spring FTP如何实现上传下载工具类的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种。  ...
    99+
    2023-05-30
    spring ftp
  • 怎么在shell中实现一个ftp上传下载文件功能
    怎么在shell中实现一个ftp上传下载文件功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1,建立主机A到其他三台主机之间的信任关系,以便于远程拷贝文件#生成主机A的本...
    99+
    2023-06-09
  • C#利用FluentFTP实现FTP上传下载功能详解
    目录FTP基础知识FTP环境搭建FluentFTP安装示例演示示例源码FTP作为日常工作学习中,非常重要的一个文件传输存储空间,想必大家都非常的熟悉了,那么如何快速的实现文件的上传下...
    99+
    2023-02-21
    C#实现FTP上传下载 C# FTP上传下载 C# FTP上传 C# FTP下载 C# FTP
  • PHP Linux脚本操作实践:实现FTP上传与下载
    在现代的Web开发中,与服务器之间的文件传输是一个常见的需求。而FTP(File Transfer Protocol)是一种被广泛应用于文件传输的协议。本文将介绍如何使用PHP在Linux环境下实现FTP的上传与下载,并给出具体的代码示例。...
    99+
    2023-10-21
    Linux PHP ftp
  • Java语言实现简单FTP软件 FTP上传下载队列窗口实现(7)
    本文为大家介绍了FTP上传下载队列窗口的实现方法,供大家参考,具体内容如下首先看一下队列窗口的界面看一下上传队列窗口的界面看一下下载队列窗口的界面package com.oyp.ftp.panel.queue; import static...
    99+
    2023-05-31
    java ftp 上传下载队列
  • Android中怎么利用FTP实现多线程断点续传下载上传功能
    Android中怎么利用FTP实现多线程断点续传下载上传功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。FTP下载原理FTP单线程断点续传FTP和传统的HTT...
    99+
    2023-05-30
    android
  • C#怎么实现FTP上传文件
    本文小编为大家详细介绍“C#怎么实现FTP上传文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么实现FTP上传文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。通过用FTP进行上传文件,首先要实现建立F...
    99+
    2023-06-30
  • Linux下如何使用Shell脚本实现ftp的自动上传下载
    小编给大家分享一下Linux下如何使用Shell脚本实现ftp的自动上传下载,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1. ftp自动登录批量下载文件。代码如下:#####从ftp服务器上的/home/data 到 本...
    99+
    2023-06-09
  • Java使用Sftp和Ftp实现对文件的上传和下载
    sftp和ftp两种方式区别,还不清楚的,请自行百度查询,此处不多赘述。完整代码地址在结尾!! 第一步,导入maven依赖 <!-- FTP依赖包 --> <...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作