2016-08-18 63 views
1

我正在使用libcurl下載二進制文件,但我想讀取這些二進制文件的頭部,這是第一對字節。如果標題字節符合條件,我想繼續下載,否則我不想取消下載。cURL在條件下殺死下載

size_t writeData(void *contents, size_t size, 
            size_t nmemb, FILE *stream) { 

    const unsigned char * cPtr; 
    cPtr = (const unsigned char*)contents; 
    bool isByte = checkByte(cPtr, nmemb); 
    if (isByte){ 
     // Continue Download, and write to disk. 
     size_t written = fwrite(contents, size, nmemb, stream); 
     return written; 
     } 
    else 
     // Kill Download. 
} 
+0

考慮到這是在文檔描述的非常詳細,如由@Anton答案引用,說實在,你想的問題在問你這個問題之前找到信息... –

回答

1

定義您自己的寫功能設置選項CURLOPT_WRITEFUNCTION。看看這裏的文檔:https://curl.haxx.se/libcurl/c/CURLOPT_WRITEFUNCTION.html

要中止傳輸,您只需從寫入函數返回值,小於傳遞到您的寫入函數的字節數。文檔中的相應行:

如果該數量與傳遞給您的回調函數的數量不同,它會向庫發出一個錯誤信號。這將導致轉讓得到中止,使用的libcurl函數將返回CURLE_WRITE_ERROR