Handling files while working with APIs
are always a pain. While working with API
calls, the most common solution is cURL
for sure for requesting & receiving data through the valid endpoints.
You may also like
Snippet
$file = Input::file( 'file_name' ); $imagePath = $file->getPathName(); $tmp = tempnam( sys_get_temp_dir(), 'php' ); file_put_contents( $tmp, file_get_contents( $imagePath ) ); $curl = curl_init(); curl_setopt( $curl, CURLOPT_URL, 'mydomain.com/api/endpoint' ); curl_setopt( $curl, CURLOPT_VERBOSE, 1 ); curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, 1 ); // sending file curl_setopt( $curl, CURLOPT_POST, true ); curl_setopt( $curl, CURLOPT_HTTPHEADER, array( "authorization: Bearer " . $token ) ); curl_setopt( $curl, CURLOPT_POSTFIELDS, array( 'file_name' => $tmp, ) ); // outputting the response curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ); $result = curl_exec( $curl ); unlink( $tmp ); // removing temp file curl_close( $curl ); $results = json_decode( $result );
Conclusion
The above piece of code
is tested & works just fine. You just need to replace your image name, API endpoint & token (if required).
Doesn't like this approach? You may also read on how to handle file inputs in PHP
with GuzzleHTTP
Client.
Try it out yourself & leave us a comment in the below section if you got stuck in between. We'd love to help out.
Do follow us on Twitter.