1ftp环境没问题,用户权限没有问题。ftp在linux上安装。
2使用FTPClient上传,本地(win7)上传正常。
3部署到windows server服务器后,上传失败,提示超时。
以下是我的代码
String ip = "*****";
String userName = "***";
String passWord = "***";
String remoteDirectoryPath = "/var/html"; //上传路径
String localFilePath = "C://123.jpg"; //本地文件
String remoteFileName = "111.jpg"; //上传后文件
FTPClient ftpClient = new FTPClient();
ftpClient.setConnectTimeout(10*1000);
System.out.println("本地文件路径*****"+localPath);
try {
ftpClient.connect(ip,21);
ftpClient.enterLocalPassiveMode();//本地关闭,部署打开
boolean isLogin = ftpClient.login(userName, passWord);
System.out.println("uploadFile 登陆成功 " + isLogin);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.changeWorkingDirectory(remoteDirectoryPath);
InputStream is = new FileInputStream(new File(localFilePath));
boolean isStore = ftpClient.storeFile(remoteFileName, is);
System.out.println("上传成功 " + isStore);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ftpClient.logout();
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
好坑啊,终于解决掉了。
安全组策略增加(1024/65535)
1024/65535是被动模式传输文件的端口号。
若使用主动模式,其端口号为20端口。
还是一共从环境上找问题,检查下本地环境和目标环境的额区别。是不是目标环境上没有开通 FTP 连接端口呢?
如果可以的话,我建议远程 看一下
我遇到过一般是防火墙或者端口问题,把防火墙关了试下
感觉好像是写入的地址相关的问题 你试试排查一下是不是写入地址有啥问题比方说读写权限或者地址路径不对?或者是文件目录没有创建就写入文件异常?
数据传输代码加上接收数据大小日志输出,可能是单位数据小导致的超时,如果是这样,可以将缓冲区设置的大一点
也许是你应用服务器和ftp文件服务器网络都没有通额,你用应用服务器ping一下ftp文件服务器的ip 和端口试一下。
还是需要远程分析下原因吧