Файл загрузки 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);