CURLOPT_HTTPPOST(3)

CURLOPT_HTTPPOST3

Multipart formpost content

Usage

#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPOST,
                          struct curl_httppost *formpost);

Overview

This option is deprecated. Use CURLOPT_MIMEPOST(3) instead.

Tells libcurl you want a multipart/formdata HTTP POST to be made and you instruct what data to pass on to the server in the formpost argument. Pass a pointer to a linked list of curl_httppost structs as parameter. The easiest way to create such a list, is to use curl_formadd(3) as documented. The data in this list must remain intact as long as the curl transfer is alive and is using it.

Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with CURLOPT_HTTPHEADER(3).

When setting CURLOPT_HTTPPOST(3), libcurl automatically sets CURLOPT_NOBODY(3) to 0.

Default

NULL

Protocols

HTTP

Examples

int main(void)
{
  struct curl_httppost *formpost;
  struct curl_httppost *lastptr;
  /* Fill in the file upload field. This makes libcurl load data from
     the given file name when curl_easy_perform() is called. */
  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 = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
    curl_easy_perform(curl);
    curl_easy_cleanup(curl);
  }
  curl_formfree(formpost);
}

Return value

Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not.

Releases

79 releases since OS X 10.10; the text changed 14 times.

  1. 10.10–10.10.4
  2. 10.10.5–10.11.6
  3. 10.12–10.12.5
  4. 10.12.6–10.14.6
  5. 10.15–11.5
  6. 12.0.1–12.2
  7. 12.3–12.5
  8. 13.0
  9. 13.1
  10. 13.2
  11. 13.3
  12. 13.4
  13. 13.5–14.1
  14. 14.2–14.4
  15. 14.5–26.5

Availability

As long as HTTP is enabled. Deprecated in 7.56.0.

From curl 166.0.0.0.1 in macOS 26.5. Parsed by carta from the page's man source.