PHP强制下载远程文件而不读入内存

是否有可能强制下载PHP中的远程文件而不将其读入内存? 我知道fpassthru(),readfile(),file_get_contents()都会在将文件输出到浏览器之前将它们读入内存。

这是我的代码:

if($url = getRemoteFileURL($file_id))
{
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename="abc.zip"');
  header('Content-Transfer-Encoding: binary');
  header('Expires: 0');
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
  header('Pragma: no-cache');

  readfile($url);  // is there a better function ?
}

我不想做header(“Location:”),因为这会显示URL


如果你做了一个header("Location: ..."); 到一个下载的文件,URL实际上并没有透露太多,如果有的话。

无论如何, readfile可能是你最好的选择。 假设它直接写入输出,PHP会继续读取文件的一部分,然后输出它,然后读取下一部分等,总体上使用很少的内存。

链接地址: http://www.djcxy.com/p/65595.html

上一篇: PHP force download of remote file without reading into memory

下一篇: Error in using of file