关于FTPClient文件夹重命名的问题

关于FTPClient文件夹重命名的问题,第1张

环境描述:

1.服务端:采用serv-u11.3版本的服务器管理工具作为ftp服务端

2.客户端:采用FTPClient 1.4.1组件作为客户端访问ftp服务器

我们在用FTPClient组件上传文件时,当上传的文件名为中文时,有以下几种情况:

一、当没有禁用serv-u服务端工具的上传下载编码时,即:

没有将域限制和设置里默认的opts-utf8禁止,在:域限制和设置---FTP设置选项卡---全局属性---高级选项---第三个多选框。

1.客户端代码中如果编码为:UTF-8,那么完全没有问题,中文命名的文件可以正常上传;参考以下代码:

/**

* FTP上传单个文件测试

*/

public static void testUpload() {

FTPClient ftpClient = new FTPClient()

FileInputStream fis = null

try {

ftpClient.connect("此处填写服务器IP")

ftpClient.login("用户名", "密码")

File srcFile = new File("F:\\路由器配置.txt")

fis = new FileInputStream(srcFile)

//设置上传目录

ftpClient.changeWorkingDirectory("/admin/pic")

ftpClient.setBufferSize(1024)

ftpClient.setControlEncoding("UTF-8")//这里设置编码

//设置文件类型(二进制)

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)

boolean temp = ftpClient.storeFile(new String("路由器配置.txt".getBytes("UTF-8"),"iso-8859-1"), fis)//编码转换

System.out.println("temp-------"+temp)

} catch (IOException e) {

e.printStackTrace()

throw new RuntimeException("FTP客户端出错!", e)

} finally {

IOUtils.closeQuietly(fis)

try {

ftpClient.disconnect()

} catch (IOException e) {

e.printStackTrace()

throw new RuntimeException("关闭FTP连接发生异常!", e)

}

}

}

2.客户端代码中如果编码为:GB2312,可以上传,但是上传的文件名为乱码,代码同上,改变红颜色的字的编码为GB2312即可;

二、一、当不选serv-u服务端工具的上传下载的默认编码时,即:

在:域限制和设置---FTP设置选项卡---全局属性---高级选项---第三个多选框不要勾选时;

1.客户端代码中如果编码为:UTF-8,文件不能上传,代码中,temp变量为false

2.客户端代码中如果编码为:GB2312,文件正常上传,并且不为乱码,代码中,temp变量为true

综合上述:将ftp服务器默认编码禁用,并且客户端代码中以GB2312 编码上传并转化较为合理,解决中文文件名的问题;另外,还有多种情况没有举例,大家可以测试一下,以便了解更为透彻。

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri)request.Method = WebRequestMethods.Ftp.Rename//设置方法为重命名FtpWebResponse response = (FtpWebResponse) request.GetResponse()

看msdn文档吧,有例子,又是中文的。想深入一点的话就用一个网络监控软件,如iris,看看tcp包和别人的客户端软件发出的有何不同,这实际上就是对ftp协议的一个认识。

1、How To Use FTPWebRequest

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/17a3abbc-6144-433b-aadd-1f776c042bd5/

2、FTPWebRequest.RenameTo Error in .NET v4.0 这篇最适合你了

http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/0e5718a4-8b26-4bc4-b9e6-c4faebfc66ae


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12090062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存