zoukankan      html  css  js  c++  java
  • C/C++使用HTTP协议上传

    上传文件:

    http://zengrong.net/post/2088.htm

    #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, "message",
                   CURLFORM_COPYCONTENTS, "hello",
                   CURLFORM_END);
     
      /* Fill in the filename field */ 
      curl_formadd(&formpost,
                   &lastptr,
                   CURLFORM_COPYNAME, "filename",
                   CURLFORM_FILE,"test.xlsx",
                   CURLFORM_CONTENTTYPE, "application/vnd.ms-excel",
                   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://192.168.1.107/protocol/upload_questions/");
        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;
    }
  • 相关阅读:
    畅通工程续 (dijkstra)
    最短路径问题 HDU 3790
    【基础算法-模拟-例题-玩具谜题】-C++
    【基础算法-模拟-例题-金币】-C++
    【动态规划例题-数塔问题】-C++
    【基本数据结构之'图'】
    【最小生成树之Kruskal例题-建设电力系统】-C++
    【最短路算法例题-升降梯上】-C++
    【基本数据结构之栈】
    【栈-例题】网页跳转-C++
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/3981988.html
Copyright © 2011-2022 走看看