调用libcurl 下载文件

7 篇文章 0 订阅

1)安装libcurl相关依赖

sudo apt-get update
sudo apt-get install libcurl4-openssl-dev

2)

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

// 回调函数用于将下载的数据写入文件
size_t write_callback(void *contents, size_t size, size_t nmemb, void *userp) {
    FILE *file = (FILE *)userp;
    if (file == NULL) {
        return 0;
    }
    return fwrite(contents, size, nmemb, file);
}

int main(void) {
    CURL *curl;
    FILE *file;
    CURLcode res;

    // 初始化 libcurl
    curl_global_init(CURL_GLOBAL_DEFAULT);

    // 创建一个新的 CURL 句柄
    curl = curl_easy_init();
    if (curl) {
        // 设置要下载的文件的 URL
        curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/path/to/your/file.txt");

        // 打开要写入的文件
        file = fopen("downloaded_file.txt", "wb");
        if (file) {
            // 设置回调函数,将下载的数据写入文件
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
            curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);

            // 执行下载操作
            res = curl_easy_perform(curl);
            if (res != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            }

            // 关闭文件
            fclose(file);
        } else {
            fprintf(stderr, "Failed to open file for writing.\n");
        }

        // 清理并释放资源
        curl_easy_cleanup(curl);
    } else {
        fprintf(stderr, "Failed to initialize curl.\n");
    }

    // 全局清理
    curl_global_cleanup();
    return 0;
}

3)编译和运行

gcc -o download download.c -lcurl

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
libcurl 是一个非常强大的开源网络库,它提供了在各种操作系统上进行文件下载的功能。使用 libcurl 可以实现简单且有效的文件下载。下面是一个使用 libcurl 下载文件的示例: 1. 引入 libcurl文件: ```c #include <curl/curl.h> ``` 2. 定义回调函数: 这个回调函数会在下载数据时被调用,我们可以在这个函数中处理下载的数据。 ```c size_t write_callback(void *contents, size_t size, size_t nmemb, void *userp) { size_t realsize = size * nmemb; FILE *file = (FILE *)userp; if (file != NULL) { fwrite(contents, size, nmemb, file); } return realsize; } ``` 3. 执行下载: 在主函数中,我们可以使用 libcurl 提供的函数进行下载。 ```c int main(void) { CURL *curl; FILE *file; curl = curl_easy_init(); if (curl) { // 设置下载的 URL curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/file.txt"); // 打开文件用于保存下载的数据 file = fopen("file.txt", "wb"); if (file != NULL) { // 设置回调函数 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, file); // 执行下载 curl_easy_perform(curl); // 关闭文件 fclose(file); } // 清理资源 curl_easy_cleanup(curl); } return 0; } ``` 以上是使用 libcurl 下载文件的简单示例,它能够通过指定的 URL 下载文件,并将文件保存在本地。使用 libcurl 还可以设置代理、设置下载进度回调等更多功能,使得文件下载功能更加强大和灵活。通过 libcurl,我们可以轻松地在我们的应用程序中实现文件下载功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值