Файл загрузки PHP CURL

im пытается загрузить файл с URL-адреса, когда я использую браузер, диалог загрузки работает, но когда я использую этот код, новый файл на моем сервере остается пустым.

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

пример URL: https://myapps.gia.edu/ReportCheckPortal/downloadReport.do?reportNo=1152872617&weight=1.35

Ответ 1

Я решил эту проблему, используя это:

curl_setopt($ch, CURLOPT_SSLVERSION,3);

Это окончательный код:

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

Ответ 2

Ваш URL-адрес с использованием https-соединения. Используйте следующий параметр curl.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

Ответ 3

  • Вы проверяли, действительно ли результат содержит данные?
  • с fputs в больших файлах вам нужно указать длину байта
  • Попробуйте использовать file_put_contents($destination, $data);