官方列出来的5个, 3个更新太慢了, 其他2个试了下还没试通.
node-ftp和jsftp就是我说的那2个, 昨晚试通了. 碰到的问题还是windows gbk的恶心问题, list出的名字是乱码. jsftp呢, 执行ls的时候, 服务器不支持stat时好像有bug. 等会中午再试试第一个如何中文
@leizongmin 我还没细想, 到底哪个环节是GBK?
- 调用child_process, stdout输出的是gbk的string, 所以需要转为buffer,然后再转UTF8?
- 调用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?
能分享一下 代码么,我也遇到这样类似的问题。 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 这个老外并没有帮我们考虑编码,只能自己解决了,希望遇到这样问题的哥们分享解决方案!