Provided by: libcurl4-doc_8.2.1-1ubuntu3.3_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

       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)