I'm currently building an application written in AngularJS with a Laravel based API for the backend, data is passed via a simple PHP proxy to keep my API key secure(ish).
For POST requests the proxy simply json_decode
PHPs input stream (php://input) as Angular serialises POST data to JSON, passes it through http_build_query
then forwards it via cURL to the API - so far, it's been working flawlessly.
I've managed to get the file over to the proxy - however, as it's sent with multipart/form-data
headers, it's only available in $_FILES
and not the input stream.
Relevant snippets from the proxy below:
function curlRequest($url, $post = false, $data = null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if($post == true) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
}
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
}
$data = json_decode(file_get_contents('php://input'), true);
$data['api_key'] = API_KEY;
// File data available here!
var_dump($_FILES);
$result = curlRequest(URL, true, $data);
The problem I'm having, I'm unsure how to correctly POST the file to the API endpoint once I've got it in $_FILES
.
Any help would be greatly appreciated!