How to recieve POST data sent using "application/octet-stream" in PHP?
You have to use the $_FILES superglobal:
$contents = file_get_contents($_FILES['myfile']['tmp_name']);
You can find more information in the manual. This will only work if you are using multipart/form-data encoding in your request.
You can otherwise read the raw POST data, then parse it yourself:
$rawPost = file_get_contents('php://input');
Admin
Updated on June 17, 2022Comments
-
Admin almost 2 years
Here's what I'm dealing with. One of our programs has a support form that users use to request support. What this form does is, it performs an HTTP POST request to a PHP script that's supposed to collect the info and forward it to the support e-mail address.
The POST request contains three text fields of the type
Content-Type: text/plain
which can be easily read in PHP using$_POST['fieldname']
. Some of the content in this POST request, however, are files, of typeContent-Type: application/octet-stream
. Using$_POST
doesn't seem to work with these files. How do I go about reading the contents of these files?Thank you in advance.
-
Surreal Dreams over 13 yearsUm, would the downvoter care to explain what is wrong with my answer?
-
Kristof Provost almost 12 yearsPresumably that $_FILES only works for
multipart/form-data
, not forapplication/octet-stream
. -
Andre Lombaard almost 11 yearsThank you Kristof for your comment, it just solved hours of frustration!
-
Simon East about 10 yearsAs I found out, PHP loads the entire file into memory when using the
php://input
method (and quickly runs out of memory with large files). Definitely switch tomultipart/form-data
and use $_FILES where possible.