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

标签 java file-upload ftp

我使用ftp4j通过小程序进行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);

内网通过小程序连接并上传文件成功

但是,当我尝试使用外部网络进行测试时,已经使用 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 字节。

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

最佳答案

改用被动模式。您这边可能阻塞了端口。

关于java - FTP 上传文件错误代码=425,消息=无法打开数据连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9393241/

相关文章:

c# - 如何在IIS中下载文件?

php - 警告 : ftp_put() expects parameter 1 to be resource, 中给出的 bool 值

java - 无法在单独的类中执行事件

java - BellSoft Liberica JDK 17 Full (!) 包中的 "javafx.base.jar"在哪里?

java - 更改 Hibernate 映射的目标表

javascript - 在 TinyMCE 上设置响应式文件管理器

php - 如何阻止特定的 PHP 语句

java - 如何将文件上传到 ftp 服务器?

http - 为什么网络需要 HTTP?

java - 为什么 64 位 JVM 比 32 位更快?