PHP Curl下载返回零字节文件

时间:2013-12-06 00:29:18

标签: php curl

我正在尝试从远程位置下载文件。我使用PHP curl来完成此任务,但代码总是返回零字节文件(甚至ECHO都不返回任何内容),当我访问浏览器上的URL时,它会提示下载文件。为什么代码不会使用curl下载文件?

如果是重要的标题,有没有办法自动设置标题?

function get_data($url)
{
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_REFERER, 'https://torcache.net/');
    curl_setopt($ch,CURLOPT_ENCODING,"gzip");
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
$result = get_data($url);

我要下载的文件包含以下标题:

Content-Type    application/x-bittorrent
Cache-Control   must-revalidate, post-check=0, pre-check=0
Content-Disposition attachment; filename="1483EC6A5EB53FC27693F848E9E28175577F6743.torrent"
Connection  close
Content-Length  153812

注意:我必须添加curl_setopt($ch,CURLOPT_ENCODING,"gzip");

1 个答案:

答案 0 :(得分:2)

你需要告诉CURL关注浏览器重定向(基本上就是发生了什么)。

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

之后由您决定如何处理它,但最好将其存储/保存到文件中。