关于用FTPClient资源库上传下载以中文命名的文件的问题
来源:互联网 发布:在线客服软件有哪些 编辑:程序博客网 时间:2024/06/07 08:12
环境描述:
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 编码上传并转化较为合理,解决中文文件名的问题;另外,还有多种情况没有举例,大家可以测试一下,以便了解更为透彻。
下图为:服务端设置:
- 关于用FTPClient资源库上传下载以中文命名的文件的问题
- 使用FTPClient文件上传下载遇到的问题
- 用FTPClient的来上传下载文件
- 关于文件的上传下载问题
- ftpClient 的上传下载及删除
- 关于FTPClient操作文件后无法变更目录的问题。
- 利用FTPClient类实现文件的上传下载功能
- 利用FtpClient类实现文件的上传下载功能
- 利用FTPClient类实现文件的上传下载功能
- Serv-U 8 不支持以中文命名文件上传问题的解决
- 关于spring mvc web工程上传下载中文文件出现乱码的问题
- FTPClient 上传下载文件
- FTPClient上传下载文件
- Apache FTPClient上传下载文件
- java下载远程服务器中以中文命名的文件
- org.apache.commons.net.ftp.FTPClient文件上传下载,中文乱码
- Commons-net FTPClient上传下载的封装
- Commons-net FTPClient上传下载的封装
- Android的四大组件之ContentProvider总结
- 堆排序(最小堆)
- 你不可以不知道的findViewById
- javascript 显示和隐藏控制
- Android实现三级联动下拉框 下拉列表spinner
- 关于用FTPClient资源库上传下载以中文命名的文件的问题
- 关于android中chronometer的问题
- dp-poj2229
- JavaIO之ObjectStream(一)
- JavaIO之管道(一)
- methods that start with "copy", "create", "new", "alloc", or "retain"
- JavaIO之标准输入输出(一)
- C++函数的参数及其传递方式学习笔记
- 各种排序算法及复杂度稳定性分析(一)