FTP上传报错
501 Invalid character in command
原因:
上传了中文名称的文件
解决办法:
1.更改文件名称为英文
2.
首先FTP开启UTF-8编码
再编辑代码如下
public void uploadFile(String remotePath, String remoteFileName, InputStream inputStream) {
String LOCAL_CHARSET = "GBK";
String SERVER_CHARSET = "ISO-8859-1";
FTPClient ftpClient = new FTPClient();
this.log.info(">>>>>>>>FTP-->uploadFile--登录开始>>>>>>>>>>>>>");
try {
ftpClient.connect(this.host, this.port);
ftpClient.login(this.username, this.passwd);
ftpClient.makeDirectory(remotePath);
ftpClient.changeWorkingDirectory(remotePath);
ftpClient.setFileType(2);
if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON"))) {
LOCAL_CHARSET = "UTF-8";
}
ftpClient.setControlEncoding(LOCAL_CHARSET);
boolean isUpload = ftpClient.storeFile(new String(remoteFileName.getBytes(LOCAL_CHARSET), SERVER_CHARSET), inputStream);
if (!isUpload) {
this.log.info(">>>>>>>>FTP-->uploadFile--文件上传失败!");
throw new RuntimeException("文件上传失败!");
}
this.log.info(">>>>>>>>FTP-->uploadFile--文件上传成功!");
} catch (IOException var14) {
var14.printStackTrace();
} finally {
try {
inputStream.close();
ftpClient.disconnect();
} catch (IOException var13) {
var13.printStackTrace();
}
}
}
有帮助的话 请给个好评吧