前段时间遇到个小项目,需要访问对方提供的ftp地址,在上面进行一些操作,查阅了资料,选择了Apache FtpClient来解决这一问题,其中遇到几个问题,总结一下。
问题一,本地windows系统开发完成后,正常连接ftp服务器,能够连接上,但是上传数据的位置一直不对?
没弄清楚ftpClient的路径规则,使用ftpClient时,要随时注意你的当前路径是在哪,默认会是在ftp服务器对应位置的根目录。
如,FTPUtil.connect("upload//cn//"),这里我们的upload为根目录,cn为一级目录,如果connect或者change到该目录,上传文件就能传到cn目录下
问题二,本地上传功能完成之后,放到linux服务器,发现上传文件所有内容为空?
ftp服务器提供了2种模式,一个主动模式,一个被动模式,具体的百度已经有很多说明了,ftpClient默认使用主动模式,面临着端口,NAT,防火墙等一系列问题,所以需 要使用被动模式,让ftp服务器自己选择一个端口告知客户端来进行连接。
问题三,文件夹中其内容进行修改以后,再操作该文件夹,报错?
对文件夹上传完文件之后,使用了ftpClinet的logout方法,再次获取ftp链接,修改文件夹名称等基本信息,报错,原因是因为,尽管logout了,ftp链接一直存在,需要使 用disconnect方法来断开连接