Reputation: 499
im trying to download a file from a url, when I use the browser the download dialog works but when I use this code the new file on my server stay empty.
$ch = curl_init();
$source = "https://myapps.gia.edu/ReportCheckPortal/downloadReport.do?reportNo=$row['certNo']&weight=$row['carat']";
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec ($ch);
curl_close ($ch);
$destination = "./files/certs/$row['certNo'].pdf";
$file = fopen($destination, "w+");
fputs($file, $data);
fclose($file);
example of url: https://myapps.gia.edu/ReportCheckPortal/downloadReport.do?reportNo=1152872617&weight=1.35
Upvotes: 18
Views: 85934
Reputation: 125
See if you can use the following code to help you.
//Create a cURL handle. $ch = curl_init($fileUrl);
//Pass our file handle to cURL. curl_setopt($ch, CURLOPT_FILE, $fp);
Upvotes: 0
Reputation: 136
fputs
on larger files you need to specify byte lengthfile_put_contents($destination, $data);
Upvotes: 1
Reputation: 499
I solved this problem using this:
curl_setopt($ch, CURLOPT_SSLVERSION,3);
This is the final code:
$source = "https://myapps.gia.edu/ReportCheckPortal/downloadReport.do?reportNo=1152872617&weight=1.35";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
$data = curl_exec ($ch);
$error = curl_error($ch);
curl_close ($ch);
$destination = "./files/test.pdf";
$file = fopen($destination, "w+");
fputs($file, $data);
fclose($file);
Upvotes: 31
Reputation: 39443
Your url using https connection. Use the following curl option as well.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
Upvotes: 2