1. 程式人生 > >使用CURL斷點續傳時遇到的資料型別問題

使用CURL斷點續傳時遇到的資料型別問題

使用vc2008+CURL開發 HTTP 檔案下載時,發現只要設定了斷點續傳,就無法執行下載,向CURL註冊的下載回撥函式根本就不會被呼叫。

程式碼如下:

curl_easy_setopt(curl, CURLOPT_URL, szRemoteUrl);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, DoDownloadFunc);

curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, (nLocalFileLen>0)?nLocalFileLen:0);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);

折騰了好久,網路上都找不到類似的抱怨,一些網路上的示例程式碼寫法和我一樣。

因此,甚至懷疑是否自己編譯的CURL庫不正確,但是替換CURL庫問題依舊。

最終發現其實錯在CURLOPT_RESUME_FROM_LARGE的引數設定上。

CURLOPT_RESUME_FROM_LARGE支援的引數型別是 long long型別。所以,以上程式碼的續傳設定修改如下,就OK了。

curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, (LONGLONG)((nLocalFileLen>0)?nLocalFileLen:0));

大家如果遇到類似問題,也許可以確認下引數型別。