这个好奇怪,下载的时候,他会中文转换成英文,只有那些转换不出来的才会变成乱码,然后乱码就报错了,,请问有没有人用C# 写过这个?
用第三方类库Tamir.SharpSSH.dll,我就是用这个,目前没发现有什么问题
SFTP类可以参考:https://blog.csdn.net/angle_greensky110/article/details/45392663
我就是用这个,你在下载的时候,没有产生中文乱码的原因?
中文都乱码
@Cgrain: 不会呀,我是先获取SFTP上指定的文件类型的列表,显示在listboxh 上,再根据选择下载
@Luckyfish小文: 我看了一下,发现是从获取列表这里就已经乱码了,不知道是什么原因
@Cgrain: 是的,输出编码问题,读取的时候设定编码,我改了下代码(UTF-8好像还是乱码,所以我改用GB):
下午又试了下,utf也可以,但string要对应getStringUTF8:
byte[] buf = Encoding.GetEncoding("utf-8").GetBytes(src);
string getStr = Tamir.SharpSsh.java.String.getStringUTF8(buf);
@Luckyfish小文: 你这个跟我这个博客写的解决方案差不多,我也百度收到了,请问你文件上传这里是怎么做的,是用循环遍历上传,还是怎么弄的,我这里使用循环遍历上传,可是遇到了:“当文件有点大了,预计是因为上传时间就了,然后 就跳过了这个文件上传,可是我打断点了,就能全部上传,你知道如何设置每个文件上传完毕才能上传下一个文件嘛”?
@Luckyfish小文: 你用这个方法的话,只能上传某种文件后缀的文件吧,我把这个方法重载了,可以遍历出,一个文件夹下面的所有文件,排除文件夹
@Cgrain: 我看了下amir.SharpSSH.dll里SFTP里面,是没有上传大小限制的,你未上传成功一个可能是SFTP服务器或者其它网络异常;你可以跳过文件继续上传,也说明不是限制问题,否则就会报错了。
至于按顺序上传文件的做法:
一种方法:你可以在调用用put的时,用迭代遍历你上传的文件,每PUT一个文件后,执行continue;
另一种方法:用线程同步调用put,这样也可以达到你的目的
@Cgrain:是的,我的程序对上传后缀是有限制的, 你不限制的话,也很简单,无需重载,直接去掉fileType和if判断就可以了,这个和File遍历文件的方法是一样的
@Luckyfish小文: 我待会 试试 用线程的, 好的,谢谢了
无法解决,要看上传的人。意思是,可能这个人给文件命名时一半是utf-8一半是unicode。所以你要在乱码部分再针对解码
自己上传文件测试了一下,这个问题真的非常的奇怪,目前测试,发现乱码无法解决的文件名字 叫 xxxx单1 ,这个单1 解析就会乱码 单_1 解析出来正常。。。。 单sd1 没问题 ,唯独 ”单1“