FTP支持两种模式,一种方式叫做Standard主动方式,缺省时默认的方式,一种是 Passive 被动方式。
下面介绍一个这两种方式的工作原理:
因为很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网后的FTP客户端不支持主动模式,因为服务器无法穿过防火墙或者无法连接到NAT后的客户端。
至此,找到了原因:我是用的本机上开启了防火墙,FTP服务器请求本机的端口被隔离阻止。
- 解决方案:将ftp模式修改为Passive模式。加上如下代码即可解决上传文件大小为0的问题
ftp.enterLocalPassiveMode();