美文网首页
基于libcurl下载文件

基于libcurl下载文件

作者: zhjwang | 来源:发表于2018-12-28 20:45 被阅读7次

Linux 上使用libcurl下载http文件。

需要安装libcur

apt-get install libcurl4-openssl-dev
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>

//判断文件是否存在
int checkRemoteRuleFileExist(const char * URL) {
 
    CURL * curl_fd = curl_easy_init();
    CURLcode code = -1;
    CURLINFO response_code = 0;
    curl_easy_setopt(curl_fd, CURLOPT_NOBODY, 1);
    curl_easy_setopt(curl_fd, CURLOPT_TIMEOUT, 3);
    curl_easy_setopt(curl_fd, CURLOPT_URL, URL);
    code = curl_easy_perform(curl_fd);

    if (code == CURLE_OK) {
        curl_easy_getinfo(curl_fd, CURLINFO_RESPONSE_CODE, &response_code);
    }

    curl_easy_cleanup(curl_fd);

    return response_code;
}

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()
{
    char *url = "http://127.0.0.1/test.html";

    if(checkRemoteRuleFileExist(url) == 404)
    {
        printf("file not existff\n");
    }

    CURL *curl;
    FILE *fp;
    CURLcode res;
   
    char outfilename[FILENAME_MAX] = "./test.html";
    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;
}

编译:

gcc main.c -lcurl

相关文章

  • 基于libcurl下载文件

    Linux 上使用libcurl下载http文件。 需要安装libcur 编译:

  • 集成 libcurl(7.61.0)

    Visual C++ 2017 集成 libcurl(7.61.0) 下载 安装 Visual Studio 20...

  • libcurl编译

    文|Seraph 搭配 libcurl 7.26.0 (点击可下载) VC6.0 Windows Platform...

  • Windows 下编译 libcurl 库

    近期的项目中用到了文件的上传和下载功能,于是就发现了 libcurl 网络传输库。要使用该库,当然首先就需要进行编...

  • 构建Docker-Java基础镜像

    基于ubuntu构建基础镜像,下载ubuntu镜像 编写Dockerfile文件 构建docker镜像 基于基础包...

  • Android mvp+retrofit2+rxjava+gr

    多文件断点下载(基于mvp模式) 介绍 和大多数应用商店一样,多个apk文件同时下载,点击暂停,停止下载,或者在下...

  • windows 下 realloc() 有大坑

    今天测试利用 libcurl 库,内网测试40M文件文件接收到内存,使用 curl官方例程: https://c...

  • Linux平台安装MongoDB

    1,安装依赖 yum install libcurl openssl 2,下载,解压,添加到PATH路径中 这个路...

  • Docker使用

    本文基于Linux Mint19操作系统环境。 1. 配置 apt失败则下载deb文件安装,下载deb文件 根据官...

  • libcurl学习笔记(2)——通过HTTP协议下载文件

    一、简介 libcurl 主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的 sockPHP 支持...

网友评论

      本文标题:基于libcurl下载文件

      本文链接:https://www.haomeiwen.com/subject/hmaelqtx.html