ftp客户端 可以登录但是下载不了的解决

最近有一个项目,采用了ftp从服务器下载文件,使用qftp来实现,连接ftp服务器成功,登录也没问题,但是在get文件的时候会卡住,程序没有往下走,也不抛异常。

出现这种故障,问题无非三种

1,客户端问题  (1 检查防火墙)(2站点模式:被动模式和主动模式切换测试)

2,服务器端问题;(有的主机下载正常,所以排除服务器问题)

3,线路问题(检查交换机和路由)

 

最后测试出是被动模式下,没有权限获取文件。解决办法qftp设置传输模式为主动模式。

ftp->setTransferMode(QFtp::Active);

 

 

另外记录下(非本次问题原因,只是觉得重要,算是个小知识点)——ftp有两种数据传输方式:二进制模式和ascll模式。

二进制模式是将文件直接传到服务器,不做任何改动。
ascll模式会将回车换行符修改为本机的回车换行符,会对源文件进行修改。比如windows的是‘\r\n’传送到unix会变成‘\n’。
基于这样的特性,在传输文本文件时我们通常使用ascll模式,而传输图片或者可执行文件时就需要切换为二进制模式。
        需要注意的是在使用ascll模式打开服务器上图片时也会显示错误,因为程序会将图片传送到本地的临时文件,再打开。这也相当于对源文件进行了修改,所以只对服务器上的图片进行查看也需要切换为二进制模式。

你可能感兴趣的:(QT)