我有这个代码来下载文件,但是在sourceforge.net服务器上,文件开始下载前有5秒的延迟(如果你试图在浏览器中加载这个链接,你可以看到它)。脚本完成后,我的文件大小为零。我该如何下载此文件? Thanx提前!
$url = 'http://downloads.sourceforge.net/project/gnucash/gnucash%20%28stable%29/2.4.9/gnucash-2.4.9-setup.exe';
$ch = curl_init($url);
$fp = fopen('/home/content/11/8564211/html/'.substr($url,strrpos($url,'/'),strlen($url)), 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
答案 0 :(得分:1)
Sourceforge使用元刷新标记来开始下载,因为CURLOPT_FOLLOWLOCATION响应Location:标题,它很可能无法帮助。
我认为您将不得不进行som HTML解析以实现您想要做的事情。你必须找到这一行:
<meta http-equiv="refresh" content="5; url=http://downloads.sourceforge.net/project/gnucash/gnucash%20%28stable%29/2.4.9/gnucash-2.4.9-setup.exe?r=&ts=1333621946&use_mirror=switch">
然后你必须从该行获取url并加载它。 Sourceforge可能会使用一些基于cookie或会话的限制器进行此类下载,因此您可能需要对此进行补偿。
我还没有对此进行过测试,但看起来这很接近你必须这样做。
答案 1 :(得分:0)
答案 2 :(得分:0)
你可以试试这个:
$url = 'http://downloads.sourceforge.net/project/gnucash/gnucash%20%28stable%29/2.4.9/gnucash-2.4.9-setup.exe';
$ch = curl_init($url);
$fp = fopen('/home/content/11/8564211/html/'.substr($url,strrpos($url,'/'),strlen($url)), 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);
fclose($fp);
答案 3 :(得分:0)
在下载页面上,有一个直接链接,您可以尝试使用它吗?