Provided by: libcurl4-doc_8.5.0-2ubuntu10.6_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 one 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

       int main(void)
       {
         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(form);
         }
       }

AVAILABILITY

       Option added in 7.81.0.

RETURN VALUE

       Returns CURLE_OK

SEE ALSO

       CURLOPT_HTTPPOST(3), CURLOPT_MIMEPOST(3)

ibcurl 8.5.0                                    December 04, 2023                        CURLOPT_MIME_OPTIONS(3)