使用cURL以编程方式从站点的成员区域下载

时间:2009-11-07 02:39:06

标签: curl

这是我想下载的链接:

http://username:password@example.com/dl/file.zip

编辑:stackoverflow似乎与冒号,它的用户名 - 冒号密码一样奇怪。

现在,如果我退出网站并使用上面的网址格式,它会成功进行身份验证,我可以成功下载该文件。

我有这个cURL脚本:

<?php
echo "Attempting to download...<br />";
$out = fopen("zip.zip", 'wb');
if ($out == FALSE){
 die('File could not be opened, exiting.');
}

$ch = curl_init();

curl_setopt($ch, CURLOPT_FILE, $out);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $file);

curl_exec($ch);   
curl_close($ch);
fclose($out);
?>

由于某种原因,它只是下载一个0KB的文件。我很确定编码是正确的,但如果不能正常工作则不行。

有任何帮助吗?感谢。

3 个答案:

答案 0 :(得分:1)

尝试添加关注位置选项:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

编辑:解释 根据我的经验,许多下载链接被重定向到实际包含该文件的另一个链接。默认情况下,卷曲不遵循重定向,并且需要首先启用该选项。

要调试此问题,您可以设置CURLOPT_RETURNTRANSFER选项,然后打印curl_exec结果:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
print_r($result);

如果标头包含Location: ...参数,那么这就是您的问题。

答案 1 :(得分:0)

您是否在shell中使用curl尝试过URL?

答案 2 :(得分:0)

curl_setopt($ ch,CURLOPT_USERPWD,$ username。':'。$ password);