加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:43:19 所属栏目:PHP教程 来源:网络整理
导读:是否可以在 PHP中强制下载远程文件而不将其读入内存?我知道fpassthru(),readfile(),file_get_contents()都会在将文件输出到浏览器之前将文件读入内存. 这是我的代码: if($url = getRemoteFileURL($file_id)){ header('Content-Type: application/octet-str
是否可以在 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 ?
}

我不想做标题(“位置:”),因为这会显示URL

解决方法

如果你做一个标题(“位置:…”);对于下载的文件,如果有的话,URL实际上并没有显示出来.

无论如何,readfile可能是你最好的选择.我认为,鉴于它直接写入输出,PHP继续读取文件的一部分,然后输出它,然后读取下一部分等,整体使用非常少的内存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读