现在的位置: 首页 > 综合 > 正文

CURL库FTP传输文件,当ftpServer端默认登录的目录不是根目录/时,有一个bug会产生

2014年01月07日 ⁄ 综合 ⁄ 共 6567字 ⁄ 字号 评论关闭

CURL 库在使用FTP传输文件时, 正常情况下, ftp的server端都会默认进入根目录 /,   但是当ftp的server端设置了一个子目录,

比如 ftp的server设置了  /data/movies 为第一次默认进入的目录, 则curl的FTP将会无法传输文件, 错误的原因是 :

 

ftp的下载地址为  ftp://root:123456@192.168.2.223/data/movies/vbr.ts

 

而第一次进入的目录为 /data/movies  , 而curl库的FTP解析ftp地址得出 要进入 data 和movies 目录后才能找到下载的文件,

就会去执行  CWD data   和  CWD movies , 而在 /data/movies 这个目录去进入  data 目录, 目录肯定是不存在的,

所以出错。

 

具体的错误现象如下:

 

 

下面的代码是我使用的代码

 

 

修改方法是  修改 curl库目录下面 lib文件夹下面的 ftp.c 文件

 

在函数 static CURLcode ftp_parse_url_path(struct connectdata *conn) 中 添加如下代码

 

 

意思就是 让ftp客户端从 根目录开始一级一级的进入到文件所在的目录。

 

添加的位置如下 :

 

抱歉!评论已关闭.