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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
PHP脚本的10个技巧(8)
Oct 09 PHP
建立文件交换功能的脚本(三)
Oct 09 PHP
PHP 分页原理分析,大家可以看看
Dec 21 PHP
PHP 编程安全性小结
Jan 08 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
ThinkPHP与PHPExcel冲突解决方法
Aug 08 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
Aug 28 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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 xml文件操作代码(一)
2009/03/20 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
jQuery的context属性用法实例
2014/12/27 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
python插入排序算法的实现代码
2013/11/21 Python
Python实现的批量下载RFC文档
2015/03/10 Python
总结Python编程中函数的使用要点
2016/03/20 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
QML实现钟表效果
2020/06/02 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
幼儿园教师备课制度
2014/01/12 职场文书
档案工作汇报材料
2014/08/21 职场文书
团队拓展活动总结
2014/08/27 职场文书
大学生个人总结范文
2015/02/15 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS