最近项目新需求,需要从服务器上下载文件,然后经过处理与整合,再上传到另一台服务器。
首先要进行ftp的连接,虽然不难,但对于一个菜鸟来说,还是要记录一下啦~
我们使用的是FTPClient进行ftp的连接。对于ftp连接,其实还是遇到了很多问题的, 代码问题不大, 因为基本上就是通过host,port,username,password直接连接即可,(下面要说的主要是在java代码中的操作以及输出,不再举例客户端的情况)。代码如下:
public static void main(String[] args) throws IOException { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); FTPClient f = new FTPClient(); f.connect("要连接的ftp地址",端口号); f.login("用户名", "密码"); //这一句很重要!!!下面进行解释 f.enterLocalPassiveMode(); //返回登录结果状态 int reply = f.getReplyCode(); System.out.println(reply); FTPFile[] files = f.listFiles("/"); for (int i = 0; i < files.length; i++) { System.out.println(files[i].getName()); } if (!FTPReply.isPositiveCompletion(reply)) { System.out.println(f.list()); f.disconnect(); return ; } }
代码比较简单,只是为了简单的ftp连接测试,没有体现出封装性,后续进行代码完善。代码并不难理解,而且网上很多例子,但在操作过程中难免会遇到一些问题,在我多次运行时,不会列出当前目录的列表,ftp返回结果一直是220,就再没有下文,然后经过百度,有的说是环境的问题,有的说是防火墙的问题,当我把防火墙关闭的时候,代码运行正常了,返回230,且打印出了列表。但防火墙关闭也不是个很好的解决办法啊,然后又通过高级设置只允许某固定ip,port可以通过防火墙,但还是不行,后面发现有个很好的解决办法,不需要关闭防火墙,也不需要高级设置,加上了这句:
f.enterLocalPassiveMode();
采用ftp 被动模式 的传输文件协议,这一点很关键。
ftp文件传输协议有两种模式:主动模式和被动模式。
ftp连接过程中,也会出现530等等之类的问题,后查资料了解到ftp返回值详解说明,这里总结一下几个常用的以及经常遇到的返回结果:
220:表示服务就绪,但此时并没有登陆成功(在测试过程中,很多次返回这个状态码,都以为是连接成功了,但一直不会打印出来当前目录的列表,因为这只是刚服务就绪,还没有真正进行连接)
230:连接且登陆成功
530:未登录,登陆错误(用户名或密码错误)
开发过程中我暂时只遇到了这三种返回值的情况,(因为目前只是进行简单的ftp连接),还有很多结果,这里就先不写了,百度上也能搜得到,等遇到问题再来补充。
相关知识
为什么无法连接ftp,压缩包加密了怎么破解?
ftp如何上传网站(freebuds怎么读)
iphone5无法连接Google离线地图服务器 (iphone5 google离线地图连接不到服务器)
个人电脑搭建私有云服务器
计算机网络——应用层(完结撒花)
服务器防黑策略
搭建自己的个人博客(保姆级教程),服务器、域名、网站全篇
服务器嫁接什么意思
WEB安全之网站防黑策略部署防范篇
Internet应用教学讲解课件.ppt
网址: FTPClient连接FTP服务器 https://m.huajiangbk.com/newsview2240779.html
上一篇: 大葱和红薯什么时间收获?收获后怎 |
下一篇: 百日菊的种子怎么收获和保存 |