您的位置:首页 > 编程语言 > PHP开发

利用FTPClient上传的文件中中文名字乱码解决办法

2016-05-13 15:23 796 查看
添加下面这一段:

if (FTPReply.isPositiveCompletion(ftpClient.sendCommand(

"OPTS UTF8", "ON"))) {
// 开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK).
charSet = "UTF-8";
}
ftpClient.setControlEncoding(charSet);

public static boolean upload(String ip, String userName, String passWord,
int port, String charSet, String sourceFileUrl, String ftpGoalDir,
ArrayList<String> fileNameList) throws Exception {
// 上传不成功
boolean res = false;
// 创建一个连接FTP服务器对象
FTPClient ftpClient = new FTPClient();
// 创建一个文件写入流对象
FileInputStream fis = null;
try {
// 连接FTP服务器
ftpClient.connect(ip, port);
// 登录FTP连接
ftpClient.login(userName, passWord);
// 在ftp上创建同名文件夹
if (sourceFileUrl.substring(
sourceFileUrl.lastIndexOf(File.separator) + 1).length() > 0) {
ftpGoalDir = ftpGoalDir
+ File.separator
+ sourceFileUrl.substring(sourceFileUrl
.lastIndexOf(File.separator) + 1);
}

if (!isDirExist(ftpClient, ftpGoalDir)) {
boolean ff = makeDir(charSet, ftpClient, ftpGoalDir);
if (ff == false) {
throw new Exception("创建文件夹" + ftpGoalDir + "出错!");
}
}
for (int i = 0; i < fileNameList.size(); i++) {
// 创建文件对象
File srcFile = new File(sourceFileUrl + File.separator
+ fileNameList.get(i));
// 向FTP服务器写入文件
fis = new FileInputStream(srcFile);
if (i == 0) {
// 设置上传目录
boolean flag = ftpClient.changeWorkingDirectory(new String(
ftpGoalDir.getBytes(charSet), "ISO-8859-1"));
System.out.println(flag);
}
// 向目标服务器写入文件大小限制
ftpClient.setBufferSize(1024 * 1024);
//
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
if (FTPReply.isPositiveCompletion(ftpClient.sendCommand(
"OPTS UTF8", "ON"))) {
// 开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK).
charSet = "UTF-8";
}
ftpClient.setControlEncoding(charSet);

boolean flag = ftpClient.storeFile(
new String(fileNameList.get(i).getBytes(charSet),
"ISO-8859-1"), fis);
System.out.println(flag);
res = true;
fis.close();
}
System.out.println("upload successful!");
} catch (IOException e) {
throw new RuntimeException("FTP客户端出错!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: