java上传文件到ftp,能创建目录,但文件不能写入(FTPClient.enterLocalPassiveMode()的用法)

问题描述

之前在写文件上传到ftp服务器的java代码时,发现创建目录各项操作均正常,但在写入文件时无论如何都写入不进去,文件可以创建成功,无始终是0字节,论是通过FTPClient的storeFile还是通过输出流写入,都不起作用,后来发现是 数据连接模式的问题即:enterLocalPassiveMode()

FTPClient的数据传输模式enterLocalPassiveMode()

当在客户端和服务器之间进行数据传输时需使用该方法,启用该方法后,客户端在打开数据连接之前会向服务器发出PASV(或EPSV)命令,通知服务器将打开客户端链接到的数据端口来进行数据传输。

解决方式

即解决该问题的方式则是在FTPClient连接服务器成功后,设定为客户端对服务器的数据传输模式

FTPClient ftp = new FTPClient();
ftp.connect(host,port);
ftp.login(user,passWord);
ftp.enterLocalPassiveMode()
ftp.storeFile(reomte,InputStream);
posted @ 2019-10-12 13:34  sssuperMario  阅读(1262)  评论(0编辑  收藏  举报