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

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

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

ftp的下载地址为 ftp://root:[email protected]/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客户端从 根目录开始一级一级的进入到文件所在的目录。

添加的位置如下 :

你可能感兴趣的:(server)