Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CURLOPT_MIME_OPTIONS(3)     Library Functions Manual	 CURLOPT_MIME_OPTIONS(3)

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 options. 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 filenames 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 re-
	    spectively.

	    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 filename strangename"kind. When the
	    containing	multipart  form is sent, this is normally transmitted as
	    strangename%22kind. When this option is set, it is sent as	strange-
	    name"kind.

DEFAULT
     0, meaning disabled.

PROTOCOLS
     This functionality affects http, imap and smtp

EXAMPLE
     int main(void)
     {
       CURL *curl = curl_easy_init();
       curl_mime *form = NULL;

       if(curl) {
	 CURLcode result = CURLE_OK;
	 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 */
	     result = curl_easy_perform(curl);
	   }
	 }

	 curl_easy_cleanup(curl);
	 curl_mime_free(form);
       }
     }

HISTORY
     CURLMIMEOPT_FORMESCAPE macro became long type in 8.16.0, prior to this ver-
     sion a long cast was necessary when passed to curl_easy_setopt(3).

AVAILABILITY
     Added in curl 7.81.0

RETURN VALUE
     curl_easy_setopt(3) returns a CURLcode indicating success or error.

     CURLE_OK (0) means everything was OK, non-zero means an error occurred, see
     libcurl-errors(3).

SEE ALSO
     CURLOPT_HTTPPOST(3), CURLOPT_MIMEPOST(3)

libcurl 			   2026-06-11		 CURLOPT_MIME_OPTIONS(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=CURLOPT_MIME_OPTIONS&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help