zoukankan      html  css  js  c++  java
  • curl的http上传文件代码

     

    int http_post_file(const char *url, const char *user, const char *pwd, const char *filename)
    {
        assert(url != NULL);
        assert(user != NULL);
        assert(pwd != NULL);
        assert(filename != NULL);

        int ret = -1;
        CURL *curl = NULL;
        CURLcode code;
        CURLFORMcode formCode;
        int timeout = 15;

    #define CHECK_FORM_ERROR(x)                                                /
        if ((formCode = (x)) != CURL_FORMADD_OK)                            /
        {                                                                    /
            fprintf(stderr, "curl_formadd[%d] error./n", formCode);            /
            goto out;                                                        /
        }

    #define CHECK_SETOPT_ERROR(x)                                            /
        if ((code = (x)) != CURLE_OK)                                        /
        {                                                                    /
            fprintf(stderr, "curl_easy_setopt[%d] error./n", code);            /
            goto all;                                                        /
        }

        struct curl_httppost *post=NULL;
        struct curl_httppost *last=NULL;
        struct curl_slist *headerlist=NULL;

        CHECK_FORM_ERROR( curl_formadd(&post, &last, CURLFORM_COPYNAME, "user",
            CURLFORM_COPYCONTENTS, user,
            CURLFORM_END));

        CHECK_FORM_ERROR( curl_formadd(&post, &last, CURLFORM_COPYNAME, "password",
            CURLFORM_COPYCONTENTS, pwd,
            CURLFORM_END));

        CHECK_FORM_ERROR( curl_formadd(&post, &last, CURLFORM_COPYNAME, "file",
            CURLFORM_FILE, filename,
            CURLFORM_END));

        CHECK_FORM_ERROR( curl_formadd(&post, &last,
            CURLFORM_COPYNAME, "submit",
            CURLFORM_COPYCONTENTS, "upload",
            CURLFORM_END));

        curl = curl_easy_init();
        if(curl == NULL)
        {
            fprintf(stderr, "curl_easy_init() error./n");
            goto out;
        }

        CHECK_SETOPT_ERROR(curl_easy_setopt(curl, CURLOPT_HEADER, 0));
        CHECK_SETOPT_ERROR(curl_easy_setopt(curl, CURLOPT_URL, url));
        CHECK_SETOPT_ERROR(curl_easy_setopt(curl, CURLOPT_HTTPPOST, post));
        CHECK_SETOPT_ERROR(curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout));

        code = curl_easy_perform(curl);
        if(code != CURLE_OK)
        {
            fprintf(stderr, "curl_easy_perform[%d] error./n", code);
            goto all;
        }

        ret = 0;

    all:
        curl_easy_cleanup(curl);
    out:
        curl_formfree(post);

        return ret;
    }

  • 相关阅读:
    [洛谷P1507]NASA的食物计划 以及 对背包问题的整理
    [洛谷P3811]【模板】乘法逆元
    56级信息奥赛12学子汇总
    [洛谷U63006]导函数最小系数
    [洛谷U62364]三次函数极值
    [洛谷U62358]求导函数
    Nagios 请检查HTTP服务器关于该CGI的访问权限设置
    安装Cacti-plugin
    解压安装Cacti在apache中的补充
    64位操作系统下IIS报“试图加载格式不正确的程序”错误
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4384128.html
Copyright © 2011-2022 走看看