大家给推荐个FTP CLIENT模块?
发布于 6 年前 作者 atian25 6219 次浏览 最后一次编辑是 2 年前

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

9 回复

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

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

@atian25 GBK这个问题只能自己来改了,因为老外都没这个问题。。。。

@leizongmin 我还没细想, 到底哪个环节是GBK?

  1. 调用child_process, stdout输出的是gbk的string, 所以需要转为buffer,然后再转UTF8?
  2. 调用ftp或http的类库, 输出的文件名也是gbk? 如果他们的接口给过来的就是一个string了,该如何用iconv-lite? 转2次?

@atian25 我也搞糊涂了。

  • 在Windows上,一个名叫“新建文件夹”的名称,用fs.readdir()读出来之后,其Buffer为:<Buffer e6 96 b0 e5 bb ba e6 96 87 e4 bb b6 e5 a4 b9>,能正常显示
  • 将这个文件夹复制到Linux上,读出来是<Buffer ef bf bd c2 bd ef bf bd ef bf bd c4 bc ef bf bd ef bf bd ef bf bd>,显示是乱码
  • 在Linux上用mkdir 新建文件夹创建一个目录,读出来是<Buffer e6 96 b0 e5 bb ba e6 96 87 e4 bb b6 e5 a4 b9>,显示正常,跟第一个一样

问题:难道Windows中,用fs.readdir()读取的文件名会自动将GBK转成UTF-8?

@leizongmin

=w= … 每次一碰到编码问题, 我就头大

@leizongmin

经人指点, 改了源码总算实现, 不过总觉得不爽. https://github.com/mscdex/node-ftp/issues/22 (里面的代码是测试代码, 不是最终实现)

能分享一下 代码么,我也遇到这样类似的问题。 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 这个老外并没有帮我们考虑编码,只能自己解决了,希望遇到这样问题的哥们分享解决方案!

回到顶部