Luk*_*lze 4 php curl file download
我想下载一个带有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;
?>
Run Code Online (Sandbox Code Playgroud)
这种直接远程下载也可以卷曲吗?
您需要以块的形式读取和输出文件,因为整个200MB文件可能不适合您的PHP脚本内存.
有关如何在curl中执行此操作,请参阅此问题.手册中有一个实例.被盗和修改,这样的东西应该工作(未经测试):
<?php
curl_setopt($this->curl_handle, CURLOPT_WRITEFUNCTION, "receiveResponse");
function receiveResponse($curlHandle,$data)
{
echo $data; // Ouput to the user
$length = strlen($data);
return $length;
}
?>
Run Code Online (Sandbox Code Playgroud)
请注意,这不是一个好主意.它给服务器带来了相对沉重的负担 - 如果你有相当高的流量数量,那么为代表下载服务的虚荣心付出的代价是很高的.当然,200 MB下载将为您的流量账单创建400MB!
| 归档时间: |
|
| 查看次数: |
4778 次 |
| 最近记录: |