php readfile下载大文件失败的解决方法


Posted in PHP onMay 22, 2017

本文实例讲述了php readfile下载大文件失败的解决方法。分享给大家供大家参考,具体如下:

大文件有200多M,只下载了200K就提示下载完成,且不报错。

原因是PHP内存有限制,需要改为按块下载,就是把大文件切块后逐块下载

if (file_exists($file))
{
  if (FALSE!== ($handler = fopen($file, 'r')))
  {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: chunked'); //changed to chunked
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    //header('Content-Length: ' . filesize($file)); //Remove
    //Send the content in chunks
    while(false !== ($chunk = fread($handler,4096)))
    {
      echo $chunk;
    }
  }
  exit;
}
echo "<h1>Content error</h1><p>The file does not exist!</p>";

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 PHP
php 禁止页面缓存输出
Jan 07 PHP
PHP实现变色验证码实例
Jan 06 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 PHP
非常实用的PHP常用函数汇总
Dec 17 PHP
Linux中为php配置伪静态
Dec 17 PHP
PHP内核探索之解释器的执行过程
Dec 22 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
漂亮的thinkphp 跳转页封装示例
Oct 16 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 #PHP
PHP中trait使用方法详细介绍
May 21 #PHP
php写app接口并返回json数据的实例(分享)
May 20 #PHP
PHP实现json_decode不转义中文的方法
May 20 #PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 #PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 #PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 #PHP
You might like
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Python编程实现正则删除命令功能
2017/08/30 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
机械设计职业生涯规划书
2013/12/27 职场文书
大学生演讲稿
2014/04/25 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
python实现商品进销存管理系统
2022/05/30 Python