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
Я решил эту проблему, используя это:
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);
Ваш URL-адрес с использованием https-соединения. Используйте следующий параметр curl.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
fputs
на больших файлах вам нужно указать длину байта file_put_contents($destination, $data);