2013-02-20 40 views
1

在我的程序中,我想下載幾個文件。所以我把卷曲和使用該代碼(截斷並從這裏Download file using libcurl in C/C++修改一點點):用cURL下載文件的簡單方法

#include "curl.h" 
using namespace std; 

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { 
    size_t written; 
    written = fwrite(ptr, size, nmemb, stream); 
    return written; 
} 

int DlZip(){ 
    CURL *curl; 
    FILE *fp; 
    CURLcode res; 
    string url = "http://wordpress.org/extend/plugins/about/readme.txt"; 
    char outfilename[FILENAME_MAX] = "/Users/Me/Desktop/bbb.txt"; 
    curl = curl_easy_init(); 
    if (curl) { 
     fp = fopen(outfilename,"wb"); 
     curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); 
     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); 
     curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); 
     res = curl_easy_perform(curl); 
     curl_easy_cleanup(curl); 
     fclose(fp); 
    } 
    return 0; 
} 

但是什麼都沒有發生,有沒有我的桌面上的任何文件: -/

什麼問題與我的代碼? 或者如果你有一個簡單的功能使用,你能給我嗎?

謝謝!

+0

在您的項目目錄(或您的可執行文件所在的位置)中查找目錄的用戶。它在嗎? – qPCR4vir 2013-02-20 17:25:42

+0

爲簡潔起見,此示例省略了錯誤處理。你需要自己做。 – 2013-02-20 17:33:28

回答

0

檢查下面的代碼

#include <cstdio> 
#include <curl/curl.h> 
#include <curl/types.h> 
#include <curl/easy.h> 
#include <string> 



using namespace std; 

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { 
    size_t written; 
    written = fwrite(ptr, size, nmemb, stream); 
    return written; 
} 

int main(){ 
    CURL *curl; 
    FILE *fp; 
    CURLcode res; 
    string url = "http://www.joes-hardware.com/tools.html"; 
    char outfilename[FILENAME_MAX] = "./MyText.txt"; 
    curl = curl_easy_init(); 
    if (curl) { 
     fp = fopen(outfilename,"wb"); 
     curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); 
     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); 
     curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); 
     res = curl_easy_perform(curl); 
     curl_easy_cleanup(curl); 
     fclose(fp); 
    } 
    return 0; 
} 

它工作正常。 問題是 - 此代碼無法使用https,因此當您在瀏覽器中打開並通過上述代碼提供的url時,會產生單獨的響應。

+0

http://stackoverflow.com/questions/25540547/how-to-receive-a-zip-file-from-server-c-c/25545023#25545023這是如何工作的 – 2014-08-28 09:14:45