.\" generated by cd2nroff 0.1 from CURLOPT_POSTFIELDSIZE.md .TH CURLOPT_POSTFIELDSIZE 3 "2026-10-31" libcurl .SH NAME CURLOPT_POSTFIELDSIZE \- size of POST data pointed to .SH SYNOPSIS .nf #include CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size); .fi .SH DESCRIPTION Set the \fIsize\fP of the data buffer to POST to prevent libcurl from doing a strlen() to figure out the data size. When this option is used you can post fully binary data, which otherwise is likely to fail. If this size is set to -1, libcurl uses strlen() to get the size or relies on the \fICURLOPT_READFUNCTION(3)\fP (if used) to signal the end of data. You \fImust\fP make sure that the set size is not larger than the provided buffer. If you post more than 2GB, use \fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP. .SH DEFAULT -1 .SH PROTOCOLS This functionality affects http, mqtt and rtsp .SH EXAMPLE .nf #include /* for strlen */ int main(void) { CURL *curl = curl_easy_init(); if(curl) { CURLcode result; static const char *data = "data to send"; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); /* size of the POST data */ curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(data)); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); result = curl_easy_perform(curl); curl_easy_cleanup(curl); } } .fi .SH AVAILABILITY Added in curl 7.2 .SH RETURN VALUE \fIcurl_easy_setopt(3)\fP returns a CURLcode indicating success or error. CURLE_OK (0) means everything was OK, non\-zero means an error occurred, see \fIlibcurl\-errors(3)\fP. .SH SEE ALSO .BR CURLOPT_POSTFIELDS (3), .BR CURLOPT_POSTFIELDSIZE_LARGE (3)