18

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

1
  • You need to wrap array access in {} e.g. "text{$array['key']}". Commented Mar 3, 2014 at 19:51

4 Answers 4

31

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); 
Sign up to request clarification or add additional context in comments.

3 Comments

This didn't work for me, ended up going with this solution which worked: stackoverflow.com/questions/31107851/…
I am getting empty data. But I am able to download the file directly from the browser
@user3345547 it was the issue with permission of the file. Once given the permission I was able to download it.
2

Your url using https connection. Use the following curl option as well.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); 

1 Comment

added this line and got this error: Unknown SSL protocol error in connection to myapps.gia.edu:443
1
  1. Did you check if result actually contains data?
  2. with fputs on larger files you need to specify byte length
  3. Try using file_put_contents($destination, $data);

4 Comments

1. did echo on $data and its empty, I don't know why. do you have any idea why when uses the browser I get a download dialog but with this it doesn't work?
Seeing you are requesting through SSL. If you don't need to specify the login for that URL then set the CURL option CURLOPT_SSL_VERIFYPEER to false. Also check what the error returned is with $error = curl_error($ch); then print it out
got this error: Unknown SSL protocol error in connection to myapps.gia.edu:443
Set CURLOPT_SSL_VERIFYPEER to false curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
0

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);

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.