Provided by: libcurl4-doc_7.81.0-1ubuntu1.20_all bug

NAME

       CURLOPT_MIME_OPTIONS - set MIME option flags

SYNOPSIS

       #include <curl/curl.h>

       CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MIME_OPTIONS, long options);

DESCRIPTION

       Pass a long that holds a bitmask of CURLMIMEOPT_* defines. Each bit is a Boolean flag used while encoding
       a MIME tree or multipart form data.

       Available bits are:

       CURLMIMEOPT_FORMESCAPE
              Tells libcurl to escape multipart form field and file names using the backslash-escaping algorithm
              rather than percent-encoding (HTTP only).

              Backslash-escaping  consists  in preceding backslashes and double quotes with a backslash. Percent
              encoding maps all occurrences of double quote, carriage return and line feed to %22, %0D  and  %0A
              respectively.

              Before version 7.81.0, percent-encoding was never applied.

              HTTP  browsers  used  to  do backslash-escaping in the past but have over time transitioned to use
              percent-encoding. This option allows to address server-side applications that have  not  yet  have
              been converted.

              As  an example, consider field or file name strange\name"kind.  When the containing multipart form
              is sent, this is normally transmitted as strange\name%22kind. When this option is set, it is  sent
              as strange\\name\"kind.

DEFAULT

       0, meaning disabled.

PROTOCOLS

       HTTP, IMAP, SMTP

EXAMPLE

       CURL *curl = curl_easy_init();
       curl_mime *form = NULL;

       if(curl) {
         curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
         curl_easy_setopt(curl, CURLOPT_MIME_OPTIONS, CURLMIMEOPT_FORMESCAPE);

         form = curl_mime_init(curl);
         if(form) {
           curl_mimepart *part = curl_mime_addpart(form);

           if(part) {
             curl_mime_filedata(part, "strange\\file\\name");
             curl_mime_name(part, "strange\"field\"name");
             curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);

             /* Perform the request */
             curl_easy_perform(curl);
           }
         }

         curl_easy_cleanup(curl);
         curl_mime_free(mime);
       }

AVAILABILITY

       Option added in 7.81.0.

RETURN VALUE

       Returns CURLE_OK

SEE ALSO

       CURLOPT_MIMEPOST(3), CURLOPT_HTTPPOST(3)