2

我尝试使用 PHP 进行下载重定向。我正在通过另一台服务器获取文件

例如:http ://rarlab.com/rar/wrar420.exe

我想要脚本将文件另存为临时变量,并在他保存的同时,将其作为下载发送到浏览器...

function download($url,$name,$hash){ 
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $data = curl_exec($ch); 
        curl_close($ch);
        header('Content-Description: File Transfer');
        header("Content-Disposition: attachment; filename=".$name);  
        ob_clean();
        flush();
        readfile($url);
}
download("http://rarlab.com/rar/wrar420.exe","winrar.rar","26digitHASH");

THX你们。

4

1 回答 1

1

您尝试做的几乎超出了 PHP 的范围,但由于 cURL 实现的多句柄特性,它应该是可能的。

请参阅curl_multi_exec()的文档以了解如何使用多句柄功能。

根据这个答案,可以在传输完成之前调用curl_multi_getcontent() :

//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }

    // echo the contents downloaded so far
    // Note that this must be called with the curl handle, not with the multi handle.
    echo curl_multi_getcontent($ch);
    flush();

}
于 2012-11-20T21:30:59.610 回答