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客户端从 根目录开始一级一级的进入到文件所在的目录。
添加的位置如下 :