Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Send Files using cURL in Php 5.4

Send Files Using CURL In Php 5.4

Since php 5.5, sending files in php has improved a lot. You can use CURLFile class or curl_file_create() to upload a file with CURLOPT_POSTFIELDS.


// Create a Curlfile Object / procedural method 
$cfile = curl_file_create('resource/test.png','image/png','testpic'); // try adding 

// Create a CURLFile object / oop method 
$cfile = new CURLFile('resource/test.png','image/png','testpic');

But for older versions, it’s a struggle.

First of all, you can not send files using GET method. That doesn’t even make sense. Also you need the absolute path of the file. Relative paths won’t work.

Here’s a sample code that will work-


// Create a string with file data
$cfile = "@" . $fileAbsolutePath
             . ";type=" . mime_content_type($fileAbsolutePath)
             . ";filename=" . basename($fileAbsolutePath);

Above code has 3 parts-

  • "@" . $fileAbsolutePath

    This gives the cURL library full path to the file so it knows which file to send.

  • ";type=" . mime_content_type($fileAbsolutePath)

    This is used to set a MIME Content-type for the uploaded file. Without it, MIME type defaults to application/octet-stream

  • ";filename=" . basename($fileAbsolutePath)

    This is used to give uploaded file a new name. Use this to change the name of the file that is received by the server on which request is sent.

Now you can use the $cfile variable to send file by setting it as a parameter to CURLOPT_POSTFIELDS.


// initialise the curl request
$conn = curl_init('http://abc.xyz');

// send a file
curl_setopt($conn, CURLOPT_POST, true);
curl_setopt(
    $conn,
    CURLOPT_POSTFIELDS,
    array(
      'file' => '@' . realpath('example.txt')
    )
);

// output the response
curl_setopt($conn, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($conn);

// close the session
curl_close($conn);

Reference

Function definition for curl_file_create on Php Sending Files using cURL in PHP (2009)



This post first appeared on Rahul Jain, please read the originial post: here

Share the post

Send Files using cURL in Php 5.4

×

Subscribe to Rahul Jain

Get updates delivered right to your inbox!

Thank you for your subscription

×