1. 程式人生 > >CURL庫FTP傳輸檔案,當ftpServer端預設登入的目錄不是根目錄/時,有一個bug會產生

CURL庫FTP傳輸檔案,當ftpServer端預設登入的目錄不是根目錄/時,有一個bug會產生

CURL 庫在使用FTP傳輸檔案時, 正常情況下, ftp的server端都會預設進入根目錄 /,   但是當ftp的server端設定了一個子目錄,

比如 ftp的server設定了  /data/movies 為第一次預設進入的目錄, 則curl的FTP將會無法傳輸檔案, 錯誤的原因是 :

而第一次進入的目錄為 /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客戶端從 根目錄開始一級一級的進入到檔案所在的目錄。

新增的位置如下 :