2016-01-25 4 views
2

Я пытаюсь загрузить файл с помощью cURL. Я получил URL-адрес, где находится файл, но URL-адрес перенаправляет его до достижения файла. По какой-то причине я всегда получаю страницу выхода, когда я обращаюсь к URL с помощью cURL, но когда я ввожу URL прямо в свой браузер, файл просто загружается, как и предполагалось. Файл, который должен быть загружен, является файлом RAR, но вместо файла я получаю неправильную страницу входа.Загрузить файл с cURL

Это текущий код:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "url"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$result = curl_exec($ch); 

curl_close($ch); 

print_r($result); 

Как вы можете видеть, я использую следующий код, чтобы разрешить переадресацию:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

Но я всегда получаю неправильную страницу входа на веб-сайте, если Я использую вышеуказанный код. Может ли кто-нибудь увидеть, что я делаю неправильно здесь?

Это réponse я получаю от сервера:

HTTP/1.1 302 Found 
Date: Tue, 26 Jan 2016 15:33:18 GMT 
Server: Apache/2.2.3 (Red Hat) 
X-Powered-By: PHP/5.3.2 
Set-Cookie: PHPSESSID=session_id; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Location: /nl/nl/export/download/t/Mg==/c/MTQ=/ 
Vary: Accept-Encoding 
Content-Length: 0 
Content-Type: text/html; charset=UTF-8 
+0

ли URL, чтобы загрузить файл потребуется войти в систему? Если это так, вам может потребоваться смоделировать логин, используя куки в cURL. – slbteam08

+0

Посмотрите этот ответ: http://stackoverflow.com/questions/34977535/how-do-download-a-file-from-an-ashx-page-with-php/34978954#34978954 – toto21

+0

@ slbteam08 Да, это так нужен логин, но учетные данные для входа передаются в URL-адресе. Поэтому я не знаю, нужно ли мне отправлять их рядом с URL-адресом. – user3824329

ответ

1

Попробуйте с этим кодом

$url = "www.abc.com/xyz";//your url will come here 
$fp = fopen ('test.txt', 'w+'); 
$ch = curl_init(str_replace(" ","%20",$url)); 
curl_setopt($ch, CURLOPT_TIMEOUT, 100); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_exec($ch); 
curl_close($ch); 
fclose($fp); 
+0

Если я использую этот код, то снова получаю страницу с сообщением, что вы не вошли в систему. – user3824329

+0

Какой URL-адрес вы используете? Также попробуйте с другим URL-адресом, возможно, вы пытаетесь получить доступ к ограниченному URL-адресу. – Drone

+0

https://www.tyre24.com/nl/nl/user/login/userid/{userId}/password/{password}/page/L2V4cG9ydC9kb3dubG9hZC90L01nPT0vYy9NVFE9Lw== – user3824329

Смежные вопросы