FTP上传文件错误代码= 425,message =无法打开数据连接

时间:2012-02-22 10:40:50

标签: java file-upload ftp

我正在使用ftp4j通过applet进行FTP连接上传文件。 从服务器,我已经打开了端口为27的FTP站点,targetURL =本地IP地址为192.168.x.xxx,并为用户名FTPUser授予访问权限,密码为xxxx。

FTPClient client = new FTPClient();
client.connect(targetURL, port);
client.setType(client.TYPE_BINARY);
client.login(user, password);
fis = new FileInputStream(targetFile);
client.upload(targetFile);

它通过applet在内部网络

中成功连接和上传文件

但是,当我尝试使用外部网络进行测试时,路由器已经使用NAT将本地IP转换为外部IP:175.136.xxx.xxx,端口为47027(已使用命令测试了FTP连接),我得到了此错误消息:

user: FTPUser, password: xxxx port 47027
network: Connecting http://175.136.xxx.xxx:47027/  with proxy=DIRECT
network: Connecting http://175.136.xxx.xxx:20459/  with proxy=DIRECT
it.sauronsoftware.ftp4j.FTPException [code=425, message= Can't open data connection.]
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2658)
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2539)
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2410)

从错误日志开始,它尝试通过端口47027建立连接,然后在更改为20459之后(​​我不知道它来自哪里)。

我可以看到该文件是在服务器FTP站点中创建的,但是有0个字节。

有人知道这种情况有什么问题吗?

1 个答案:

答案 0 :(得分:0)

使用被动模式。你方可能会挡住港口。