zoukankan      html  css  js  c++  java
  • libcurl post上传文件

    #include <stdio.h>
    #include <string.h>
     
    #include <curl/curl.h>
     
    int main(int argc, char *argv[])
    {
      CURL *curl;
      CURLcode res;
     
      struct curl_httppost *formpost=NULL;
      struct curl_httppost *lastptr=NULL;
      struct curl_slist *headerlist=NULL;
      static const char buf[] = "Expect:";
     
      curl_global_init(CURL_GLOBAL_ALL);
     
      /* Fill in the file upload field */ 
      curl_formadd(&formpost,
                   &lastptr,
                   CURLFORM_COPYNAME, "sendfile",
                   CURLFORM_FILE, "postit2.c",
                   CURLFORM_END);
     
      /* Fill in the filename field */ 
      curl_formadd(&formpost,
                   &lastptr,
                   CURLFORM_COPYNAME, "filename",
                   CURLFORM_COPYCONTENTS, "postit2.c",
                   CURLFORM_END);
     
     
      /* Fill in the submit field too, even if this is rarely needed */ 
      curl_formadd(&formpost,
                   &lastptr,
                   CURLFORM_COPYNAME, "submit",
                   CURLFORM_COPYCONTENTS, "send",
                   CURLFORM_END);
     
      curl = curl_easy_init();
      /* initalize custom header list (stating that Expect: 100-continue is not
         wanted */ 
      headerlist = curl_slist_append(headerlist, buf);
      if(curl) {
        /* what URL that receives this POST */ 
        curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/examplepost.cgi");
        if ( (argc == 2) && (!strcmp(argv[1], "noexpectheader")) )
          /* only disable 100-continue header if explicitly requested */ 
          curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
     
        /* Perform the request, res will get the return code */ 
        res = curl_easy_perform(curl);
        /* Check for errors */ 
        if(res != CURLE_OK)
          fprintf(stderr, "curl_easy_perform() failed: %s ",
                  curl_easy_strerror(res));
     
        /* always cleanup */ 
        curl_easy_cleanup(curl);
     
        /* then cleanup the formpost chain */ 
        curl_formfree(formpost);
        /* free slist */ 
        curl_slist_free_all (headerlist);
      }
      return 0;
    }

  • 相关阅读:
    201521123093 java 第二周学习总结
    201521123093 java 第一周总结
    Word 2010怎么自动添加文献引用
    动态链接库(dll)文件的动态调用(使用动态链接库,解析Wis文件--测井数据文件的一种)
    open inventor 学习笔记
    井眼轨迹的三次样条插值 (vs + QT + coin3d)
    VS2010 + QT 5 +open inventor 环境配置
    我的第一个项目(人力资源管理之报表管理)
    B-tree 和 B+tree
    mysql count(*)与count(1)的区别
  • 原文地址:https://www.cnblogs.com/lidabo/p/4159400.html
Copyright © 2011-2022 走看看