gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:59:11 25 4
gpt4 key购买 nike

我想用 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;
?>

curl 也可以实现这种直接远程下载吗?

最佳答案

您需要分块读取和输出文件,因为整个 200MB 的文件可能无法放入您的 PHP 脚本的内存中。

参见 this question了解如何在 curl 中执行此操作。 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!

关于php - 直接用curl下载远程文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4957325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com