2013-02-20 57 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