微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 直接用curl下载远程文件

我想下载一个带有curl的远程文件,并立即将其输出用户.
用户应该认为他从我的服务器而不是远程服务器下载文件.我无法缓冲整个文件,因为有些文件大于200 MB.此外,用户必须等待完成缓冲,直到他可以开始下载文件.

我找到了一个直接从远程服务器下载文件的脚本:

<?PHP
$file_name = $_GET['file'];
$file_url = 'http://www.remote.tld/' . $file_name;
header('Content-Type: application/octet-stream');
header("Content-transfer-encoding: Binary"); 
header("Content-disposition: attachment; filename=\"".$file_name."\""); 
readfile($file_url);
exit;
?>

这种直接远程下载也可以卷曲吗?

解决方法:

您需要以块的形式读取和输出文件,因为整个200MB文件可能不适合您的PHP脚本的内存.

有关如何在curl中执行此操作,请参阅this question.在the manual一个现实的例子.被盗和修改,这样的东西应该工作(未经测试):

<?PHP
curl_setopt($this->curl_handle, CURLOPT_WRITEFUNCTION, "receiveResponse");

function receiveResponse($curlHandle,$data)
   {
                        echo $data; // Ouput to the user
                        $length = strlen($data);
                        return $length;

                }
?>

请注意,这不是一个好主意.它给服务器带来了相对沉重的负担 – 如果你有相当高的流量数量,那么为代表下载服务的虚荣心付出的代价是很高的.当然,200 MB下载将为您的流量账单创建400MB!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐