Say I upload a file with PHP, CURL:
$postData = array();
$postData[\'file_name\'] = \"test.txt\";
$postData[\'submit\'] = \"UPLOAD\";
$ch = curl_init();
c
To get the length of a post body, try formatting the fields int a GET style string (aka param1=value1¶m2=value2
) then setting that string as the CURL_POSTFIELDS
with curl_setopt
. An array does not have to be supplied. You can simply use strlen()
to get the value to use for the content-length header.
If you are posting a file (or files) in addition to other fields, as you appear to be in the example above, you have to supply the value for the file as @/path/to/file
, then get the filesize in bytes and add that to the total content-length.
So for the above example, assuming the file test.txt
is in the /test dir
of your server, the post value string would be file_name=@/test/text.txt&submit=UPLOAD
. You MUST url_encode
this string as well, before you assign it as the curl post value. To get the content length you get the length of that string (post url-encoding) and add it to the filesize of /test/test.txt
.