curl库是一个强大的http协议操作库,可以方便的构造http请求,并获取返回,下载文件等。支持php、c、python、命令行等多种接口。

在php中,使用curl下载文件,除了CURLOPT_FILE参数,直接将文件输出到fp对于的文件中外:

curl_setopt($ch, CURLOPT_FILE, $fp);

还可以使用CURLOPT_WRITEFUNCTION,定义回调函数,对返回的文件进行进一步处理。 curl_setopt($ch, CURLOPT_WRITEFUNCTION, “call_func”); call_func有两个参数$ch, $out,$ch为curl的操作句柄,$out为下载的文件片段(分片大小一般为1500个字节),例程如下,完成了写入文件,并且输出到浏览器的功能。

$echolen = 0;
function call_func($ch, $out) {
    global $fp,$echolen, $basename;
    $len = fwrite($fp,$out); 
    
    if(!$echolen) {       //首先需要输出http header,指示文件类型给浏览器识别
        send_header($basename);
    }
    $echolen = $len;
    echo $out;
    return $echolen;     
}

Simon Lee

My blog