使用libcurl C ++将文件下载到Ubuntu,简单的示例不起作用

时间:2019-08-13 17:38:16

标签: c++ ubuntu download libcurl

我正在尝试将libcurl与C ++一起使用,以将单个映像文件下载到我的Ubuntu计算机上。

我尝试复制并粘贴此问题中显示的简单示例:Download file using libcurl in C/C++

#include <stdio.h>
#include <curl/curl.h>
#include <string>

using namespace std;

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

int main(void) {
    CURL *curl;
    FILE *fp;
    CURLcode res;
    const char *url = "https://i.imgur.com/mWj0yzI.jpg";
    char outfilename[FILENAME_MAX] = "/home/my_username/test.jpg";
    curl = curl_easy_init();
    if (curl)
    {
        fp = fopen(outfilename,"wb");
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        res = curl_easy_perform(curl);
        /* always cleanup */
        curl_easy_cleanup(curl);
        fclose(fp);
    }
    return 0;
}

我希望它下载图像文件并将其另存为我的计算机上的“ test.jpg”。但是,当我运行该程序时,“ test.jpg”的大小为0字节。显然,由于某种原因,图片未写入文件。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您的链接没有指向现有文件。有了正确的链接,它对我有用。试试这个:

const char *url = "https://i.imgur.com/oRtvmGT.jpg";