Curl PHP получение / загрузка файла по динамической ссылке - PullRequest
0 голосов
/ 18 февраля 2012

Необходимо скачать с помощью cURL из динамически сгенерированной ссылки

ссылка :thing.com/fileid=hgkjfdhgfhdg

если доступ напрямую связан с ссылкой, появится окно загрузки (опция сохранения файла).

но если использовать CURL или file_get_contents, он возвращает только имя файла.

$URL = https://somewebsite.com/fileid=hgkjfdhgfhdg
$fp = fopen("test.txt", 'w');
$c = curl_init($URL);
curl_setopt($c, CURLOPT_FILE, $fp);  
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);  
$contents = curl_exec($c);
$info = curl_getinfo($c);
curl_close($c); 
fclose($fp);

имя файла из динамической ссылки (test.txt) уже известно.

URL = https://storage -ec2-32.sharefile.com/ru download.ashx? Dt = dtca3192857a45452c84bd14e7500c7f46

Ответы [ 2 ]

1 голос
/ 19 февраля 2012

Проблема связана с тем, что вы подключаетесь к URL-адресу HTTPS, а библиотека cURL не может найти пакет сертификатов корневого CA, необходимый для подтверждения подлинности сертификата ShareFile.В результате этого cURL действует на безопасной стороне и прерывает соединение до начала передачи файла.

Лучший способ решить эту проблему - установить переключатель конфигурации curl_cainfo PHP вphp.ini - абсолютный путь к файлу, содержащему все необходимые вам сертификаты CA (согласно странице справки PHP , описывающей параметры конфигурации cURL ), а затем перезапустите сервер.

Если вы не можете сделать это, вы можете полностью отключить проверку SSL-сертификата, добавив

curl_setopt($c, CURLOPT_SSL_VERIFYPEER, FALSE);

к своему коду, чуть выше строки $contents = curl_exec($c);.

Будьте осторожны с этимпоследнее решение небезопасно и может открыть дверь человеку в середине атаки, однако - используйте его как последнее средство.

0 голосов
/ 18 февраля 2012

Во-первых, вы должны установить CURLOPT_HEADER в 0, чтобы заголовок не выводился. Во-вторых, вы уверены, что открываемый файл доступен для записи? Вы должны проверить результат fopen и curl_setopt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...