我正在尝试使用cURL下载文件。我收到了一个文件所在的URL,但是url在到达文件之前进行了重定向。出于某种原因,当我使用cURL访问URL时,我总是会收到注销页面,但是当我直接在浏览器中输入URL时,文件只会按预期下载。应该下载的文件是RAR文件,但是我得到的页面不正确,而不是文件。
这是当前的代码:
$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);
但是如果我使用上面的代码,我总是从网站上收到错误的登录页面。谁能看到我在这里做错了什么?
这是我从服务器获得的响应:
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 :(得分:2)
尝试使用此代码
$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);