zoukankan      html  css  js  c++  java
  • libcurl提交表单上传文件

    不多说了,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;
    }

  • 相关阅读:
    Microsoft SQL Server JDBC 驱动程序支持矩阵
    Package java.sql
    访问系统的时间
    tomcat 测试页面显示
    jsp中的http status 500错误问题怎么解决
    jetty访问jsp页面出现异常:org.apache.jasper.JasperException: PWC6345: A full JDK (not just JRE) is required解决
    Starting Tomcat v7.0 Server at localhost' has encountered a problem. 如何解决
    报错:org.apache.jasper.JasperException: /jsp/head.jsp (line: 1, column: 2) Page directive: illegal to
    Tomcat无法启动:Server Tomcat v8.5 Server at localhost failed to start
    Win10系统如何配置Tomcat环境变量
  • 原文地址:https://www.cnblogs.com/lidabo/p/4159594.html
Copyright © 2011-2022 走看看