NodeJs 使用FTP上传大文件(G级别)

       最近领导有一项要求是将本地文件夹下面的文件上传到FTP服务器上。由于本人之前做的上传的都是小文件,最多不超过8M的,对(G级)的文件上传暂时没有什么经验,然后结合网站上面的Demo看看的,看了很多帖子,都没能理解,再不就是需要积分下载,本着学习的态度,写一下自己的思路与实现方法,希望能给遇到同样问题的人一个参考。

       首先第一步,我们需要安装FTP模块和 fs文件模块,具体安装可以参考官方文档或者百度查找一下这里不做赘述。

下面开始代码的实现:

                                   

       第二步,我们要配置链接的账户名密码:

                                   

      第三步,实现方法

                                

       第四步,上传,

                              

上面有注意的部分就是远程文件存放位置,一定要是ftp服务器upload下的位置,不然就会报错:找不到上传路径

第五步,执行文件,运行在终端执行该js 文件,node ftp.js

                  亲测3.5G 的文件,在不到1分钟就上传完成(内网)

   

如果我解决了您的疑问,点个赞,打赏一下,您的打赏是我为以后写出更优秀的博客的动力!谢谢。

 

                            

源码:

const ftp = require('ftp');//连接FTP

const path = require('path');

const client = new ftp();

const fs = require('fs');

 

client.on('ready',()=>{

console.log(new Date());

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: "10.28.96.251",

port: "21",

user: "ftpadm",

password: "s2d3jkil",

keepalive : 1000

});

 

//切换目录

function cwd(dirpath){

return new Promise((resolve,reject)=>{

client.cwd(dirpath,(err,dir)=>{

resolve({err : err,dir : dir});

})

});

}


 

//将文件上传到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 (){

//文件上传

let {err : eb} = await put('./temp/Device42-15.11.02-vhd.7z','upload/lib/Device42-15.11.02-vhd.7z');

if(eb){

console.log(eb);

return;

}

console.log('文件上传成功')

console.log(new Date());

}

test();

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值