2016-08-18 77 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