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

本文实例讲述了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文件操作总结》、《PHP网络编程技巧总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

(0)

相关推荐

  • php使用 readfile() 函数设置文件大小大小的方法

    使用PHP ZipArchive生成的压缩包,小的压缩包都能下载,今天遇到个150M以上的就报404错误,第一想到的就是文件大小超出了PHP默认设置,修改方法有两个: php.ini:memory_limit memory_limit是设置内存限制的,如果使用readfile()读取文件就会和这个有关,直接修改这个值保存后重启php-fpm即可. memory_limit = 128M 最后记得:service php-fpm restart ini_set PHP ini_set用来设置php

  • php readfile()修改文件上传大小设置

    使用PHP ZipArchive生成的压缩包,小的压缩包都能下载,今天遇到个150M以上的就报404错误,第一想到的就是文件大小超出了PHP默认设置,修改方法有两个: php.ini:memory_limit memory_limit是设置内存限制的,如果使用readfile()读取文件就会和这个有关,直接修改这个值保存后重启php-fpm即可. php 下载文件大小设置PHP memory_limit = 128M 最后记得:service php-fpm restart ini_set PH

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

    本文实例讲述了php readfile下载大文件失败的解决方法.分享给大家供大家参考,具体如下: 大文件有200多M,只下载了200K就提示下载完成,且不报错. 原因是PHP内存有限制,需要改为按块下载,就是把大文件切块后逐块下载. if (file_exists($file)) { if (FALSE!== ($handler = fopen($file, 'r'))) { header('Content-Description: File Transfer'); header('Conten

  • PHP下载大文件失败并限制下载速度的实例代码

    1.问题: PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错: 2.原因: 这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出: 3.解决:分段下载,并限制下载速度: <?php //设置文件最长执行时间 set_time_limit(0); if (isset($_GET['filename']) && !empty($_GET['filename'])) { $file_name = $_GET['filena

  • 漏洞补丁下载成功安装失败的解决方法

    1. 在驱动器 c: 上没有足够的空间来安装 kb950749.安装程序至少需要 28 mb 的附加可用空间.或者您还想为卸载存档文件,安装程序需要 46 mb 的附加可用空间.请释放更多的空间再试. 解决方法: a.用户清理磁盘空间,保证足够的空间,即可以安装成功 2. kb****** 安装程序遇到了一个错误: 安装程序不能验证 update.inf 文件的完整性.请确定加密服务正在此计算机上运行.安装程序不能验证 update.inf 文件的完整性.请确定加密服务正在此计算机上运行 解决方

  • 还原大备份mysql文件失败的解决方法分享

    用下面方法解决(管理mysql用的是navicat).,设置以下几个参数的值后就正常了,以下语句也可以在mysql的控制台上执行 . 复制代码 代码如下: show variables like '%timeout%'; show variables like '%packet%'; set global max_allowed_packet=99328000; set global wait_timeout=2880000; set global interactive_timeout=288

  • php ci框架中加载css和js文件失败的解决方法

    在将html页面整合到ci框架里面的时候,加载css和js失败,弄了半天发现ci框架是入口的框架,对框架中文件的所有请求都需要经过index.php处理完成,当加载外部的css和js文件的时候要使用base_url()函数处理外部的链接. 比如: 在config配置文件中的base_url为:" localhost:8080/项目名称/ " 在控制器中访问application/resource/aaa.js文件 相对路径<script src= "resource/a

  • php上传大文件失败的原因及应对策略

    为什么上传大文件总是失败,但是上传小文件就没有问题.小编也不得其解,网上搜其原因,整理了一篇关于php上传大文件失败的原因和解决办法的文章,分享给大家. 下面分别是各种原因以及解决办法: 第1种情况:文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录.如果未指定则 PHP 使用系统默认值. php.ini文件中upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件并对该文件夹有写入的权限. 第2种情况:max_

  • ASP下通过Adodb.Stream实现多线程下载大文件

    有个朋友 做 某种小众音乐交换站的(他们那个行业的昵图网),需要用到付费下载.尝试过 防盗链,不太理想,最终使用了 Adodb.Stream 读取,直接输出. 解决了 盗版的问题,但是新的问题又来了.Adodb.Stream 这种方式 电脑还好说,大部分电脑浏览器都支持.移动端 很多 浏览器为了 加速读取,会多线程下载导致 文件无法正常读取. 抓包,发现增加了 HTTP头 HTTP_RANGE.隐约记得 之前读过 王大(王洪影)的 <深入解析 ASP核心技术>当中提到ASP多线程下载的问题,回

  • ASP.Net下载大文件的实现方法

    本文实例讲述了ASP.Net下载大文件的实现方法.分享给大家供大家参考.具体分析如下: 当我们的网站需要支持下载大文件时,如果不做控制可能会导致用户在访问下载页面时发生无响应,使得浏览器崩溃.可以参考如下代码来避免这个问题. 关于此代码的几点说明: 1. 将数据分成较小的部分,然后将其移动到输出流以供下载,从而获取这些数据. 2. 根据下载的文件类型来指定 Response.ContentType .(参考OSChina的这个网址可以找到大部分文件类型的对照表:http://tool.oschi

  • 关于jenkins插件下载失败的解决方法

    最近在2台电脑上装了jenkins,插件下载时好多失败的,网上找了各种方法,最后找到一个方法可以解决我的问题: 1.插件下载失败截图: 2.可以点击重试,多下载几次,如果多次后仍然不成功,可以跳过,进入jenkins管理界面. 3.修改jenkins插件的下载源地址,点击managejenkins,点击manageplugins 4.点击高级,更改升级站点下的url为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-cente

  • php将图片保存入mysql数据库失败的解决方法

    本文实例分析了php将图片保存入mysql数据库失败的解决方法.分享给大家供大家参考.具体分析如下: 图片保存数据库并不是一个明智的做法,我们多半是把图片保存到服务器,然后把图片地址保存到数据库,这样我们每次只要读出图片地址就可以显示了,但下面我还是来介绍一个图片保存到mysql数据库的问题解决办法,代码如下: 复制代码 代码如下: require 'class/db.php'; $fileName = "a1.jpg"; $fp = fopen($fileName, "r&

随机推荐