PHP下载文件函数封装及下载大文件解决方案

大家好,我是Yangrl.
今天分享的是我在学习PHP文件操作部分中实现一个下载文件函数封装时遇到的问题(小文件没问题,大文件总是下载失败)和解决的过程。
进入正题:
先贴出OJBK代码段

function down_file($filename,$allowDownExt=array ('jpg','jpeg','gif', 'rar','zip','png','txt','html')) {//检测文件是否存在,并且可读if(!is_file($filename) && is_readable($filename)) {return false;}//获取文件的扩展名$fileext=strtolower(pathinfo($filename,PATHINFO_EXTENSION));//检测文件类型是否允许下载if(!in_array($fileext,$allowDownExt)) {return false;}//设置脚本的最大执行时间,设置为0则无时间限制set_time_limit(0);//通过header()发送头信息//因为不知道文件是什么类型的,告诉浏览器输出的是字节流header('content-type:application/octet-stream');//告诉浏览器返回的文件大小类型是字节header('Accept-Ranges:bytes');//获得文件大小$filesize=filesize($filename);//告诉浏览器返回的文件大小header('Accept-Length:'.$filesize);//告诉浏览器文件作为附件处理并且设定最终下载完成的文件名称header('content-disposition:attachment;filename=yangrl'.basename($filename));//针对大文件,规定每次读取文件的字节数为4096字节,直接输出数据$read_buffer=4096;$handle=fopen($filename, 'rb');//总的缓冲的字节数$sum_buffer=0;//只要没到文件尾,就一直读取while(!feof($handle) && $sum_buffer<$filesize) {           echo fread($handle,$read_buffer);$sum_buffer+=$read_buffer;}//关闭句柄fclose($handle);exit;}

**2.rar为一个18.8MB大小的压缩文件,2_1.rar为一个1.70 GB大小的压缩文件(之前还有个1.rar,是一个几百KB的压缩文件,就不展示了,和2.rar大小一个级别的都能成功下载)

运行后测试,首先下载2.rar,下载成功保持在了浏览器下载目录里


然后继续测试下载2_1.rar,问题出现:

我连续下载了5次,但没有一次是成功下载,或多或少都没下载完整,那啷个办耶?

好吧,一顿百度过后,各路大神都有自己的一套,可一一尝试对我的这段代码都没用啊,最后谷歌到了一行代码 “set_time_limit(0);”:设置脚本最大执行时间,设置为0则无限制,然后。。“山猫山猫,我是海鸥,连下两次成功,over!”

问题就解决了!感兴趣的小伙伴可以自己深入探究我就不啰嗦啦哈哈哈。也希望大家能指出我的不足,分享自己的解决方法。

“如果真诚地试着帮助他人,必然也同时帮助了自己。”——鲁迅

PHP下载文件函数封装及下载大文件解决方案相关推荐

  1. html5解决大文件断点续传6,解决html5大文件断点续传

    一.概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载.在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了.一般断点下载时才用到Range和Content- ...

  2. 华为云服务器 大文件,云服务器上传大文件

    云服务器上传大文件 内容精选 换一换 本节操作介绍本地MacOS系统主机通过安装"Microsoft Remote Desktop for Mac"工具向Windows云服务器传输 ...

  3. html上传文件_.NET基于WebUploader大文件分片上传、断网续传、秒传

    (给DotNet加星标,提升.Net技能) 转自:学习中的苦与乐 cnblogs.com/xiongze520/p/10412693.html 现在的项目开发基本上都用到了上传文件功能,或图片,或文档 ...

  4. python读取大文件的坑_Python读取大文件的坑“与内存占用检测

    python读写文件的api都很简单,一不留神就容易踩"坑".笔者记录一次踩坑历程,并且给了一些总结,希望到大家在使用python的过程之中,能够避免一些可能产生隐患的代码. 1. ...

  5. 云服务器传文件用什么软件,免费云主机文件传输软件推荐,大文件极速秒传

    在对云主机进行运维的过程中,我们总是需要在云主机和本地之间进行文件传输.但是文件传输的过程往往会受到带宽的限制,譬如小编仅从云主机上下载一个300兆大小的文件就需要10分钟,上传一个60兆大小的文件需 ...

  6. 电脑大文件夹怎么加密?大文件夹方法介绍

    当我们把电脑中的各种数据分类存放在文件夹中时,可以方便我们使用和管理.但这些文件夹也会变得十分庞大,如果想要加密它们,就需要使用更快速.安全的方法.下面我们来了解一下电脑大文件夹的加密方法. 文件夹加 ...

  7. php webuploader大文件,web uploader 上传大文件总结

    由于业务需要,需要上传大文件,已有的版本无法处理IE版本,经过调研,百度的 webuploader 支持 IE 浏览器,而且支持计算MD5值,进而可以实现秒传的功能. 大文件上传主要分为三部分,预上传 ...

  8. php如何导入大文件数据库,PHP读取CSV大文件导入数据库的示例

    文章详细介绍了csv文件在php中快速导入到mysql数据库中的例子,虽然从最简单的几百MB的到最后使用插件实现几个GB数据导入中间有一些嗑碰了,但结果还是好的. 对于数百万条数据量的CSV文件,文件 ...

  9. php怎样加密文件,如何使用php加密大文件并通过命令行解密?

    我正在用 PHP编写一个小脚本来备份我的文件.在我从服务器传输文件之前,我想加密它们. 我在我的脚本的早期版本中通过在我的Linux服务器上使用exec()和OpenSSL来做到这一点.现在我正在寻找 ...

  10. python上传大文件s3_aws s3上传大文件的4种方法

    aws s3 上对存储的数据容量是没有限制的,各个 Amazon S3 数据元的大小可在 1 字节至 5 TB 之间,可在单个 PUT 中上传的最大数据元为 5 GB,对于大于 100 MB 的数据元 ...

最新文章

  1. (转自Timon's wang blogs)C#实现web信息自动抓取
  2. Android中的ViewDragHelper
  3. Python自动化开发学习13-堡垒机开发
  4. boost::fusion::none用法的测试程序
  5. 给Tomcat打开远程debug端口
  6. 2022博客整理之感言
  7. 梯度消失和梯度爆炸_知识干货-动手学深度学习-05 梯度消失和梯度爆炸以及Kaggle房价预测...
  8. “约见”面试官系列之常见面试题之第六十九篇之document.ready和onload的区别(建议收藏)
  9. 于.net开发平台项目案例集锦
  10. 慎用mutableCopy
  11. 打工人的健康修炼记:2021卷里求生(附报告下载)
  12. 5.4监听socket
  13. 功能测试的时代,结束了?
  14. HTML5开发手机项目总结
  15. 介绍codesmith工具
  16. 实战Node—幼教平台
  17. Adobe CS3 Design Premium 2DVD完全版(原盘镜像)
  18. 训练集,验证集,测试集分别是什么
  19. 《LOL》从代码上来说最难的是哪个英雄?
  20. fatal error C1189

热门文章

  1. JAVA集合系列(6):HashMap
  2. SpringBoot系列(5):SpringBoot对JSON数据的处理
  3. (8)二进制文件方式部署Kubernetes高可用集群----------部署高可用ETCD集群
  4. lock concurrence
  5. HDU 6330--Visual Cube(构造,计算)
  6. Java longTime 和C#日期转换
  7. Enterprise Library 4.1 Configuration Sources 图文笔记
  8. matlb:kmeans命令进行聚类和pdist2进行预测(含代码)
  9. 图像融合论文及代码网址整理总结(2)——红外与可见光图像融合
  10. 【亲测有效】macOS无法验证此App不包含恶意软件