Php 不使用fopen()下载大文件?

Php 不使用fopen()下载大文件?,php,curl,Php,Curl,我的提供程序不允许fopen()。所以我用curl代替这个来下载文件。但这只适用于较小的文件(您可以将较大的文件切成较小的块 签出“”标题和(“部分内容”) 当然,如果您将文件切成块,您需要一些东西将它们重新组合在一起。但是有很多方法可以做到这一点,而且没有一种方法可以占用服务器资源。如果您不使用fopen()也能做到这一点,那将是一件有趣的事情 另请参见:您可以将大文件切成较小的块 签出“”标题和(“部分内容”) 当然,如果你把文件切成块,你需要一些东西把它们重新组合在一起。但是有很多方法可以

我的提供程序不允许fopen()。所以我用curl代替这个来下载文件。但这只适用于较小的文件(您可以将较大的文件切成较小的块

签出“”标题和(“部分内容”)

当然,如果您将文件切成块,您需要一些东西将它们重新组合在一起。但是有很多方法可以做到这一点,而且没有一种方法可以占用服务器资源。如果您不使用fopen()也能做到这一点,那将是一件有趣的事情


另请参见:

您可以将大文件切成较小的块

签出“”标题和(“部分内容”)

当然,如果你把文件切成块,你需要一些东西把它们重新组合在一起。但是有很多方法可以做到这一点,而且它们都不应该占用服务器资源。看看您是否能够在不使用fopen()的情况下完成它,这将是一件有趣的事情


另请参见:

您可以从或CURLOPT_范围中找到有助于使用部分下载的数据重试下载的
CURLOPT_RESUME_


您可能会发现
CURLOPT\u RESUME\u FROM
CURLOPT\u RANGE
对于使用部分下载的数据重试下载非常有用


-FTP??您可以将exec()
wget
作为后台任务,这会使传输(大部分)发生在PHP无法控制的情况下。-FTP??您可以将exec()
wget
作为后台任务,这将使传输(大部分)在PHP的control.Thx之外进行。我会试试我的运气,但这看起来并不容易:)我会想象OP的主机只是关闭了
allow\u url\u fopen
,而
fopen
可以很好地处理本地文件。哦。。。是 啊可能是这样;)谢谢。我会试试我的运气,但这看起来并不容易:)我会想象OP的主机只是关闭了
allow\u url\u fopen
,而
fopen
可以很好地处理本地文件。哦。。。是 啊可能是这样;)
$file = $_GET['dateiUrl'];

//set header
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-Type: application/force-download');
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: attachment; filename=" . basename($file));
//curl part


set_time_limit(0);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_URL, $file);   
$data = curl_exec($ch);
curl_close($ch);

//output  
echo $data;