PHP下载文件的函数实例代码


Posted in PHP onMay 18, 2016

通过函数完成下载文件的PHP功能代码

function download($url, $filename) { 
// 获得文件大小, 防止超过2G的文件, 用sprintf来读 
$filesize = sprintf ( "%u", filesize ( $url ) ); 
if (! $filesize) { 
return; 
} 
header ( "Content-type:application/octet-stream\n" ); //application/octet-stream 
header ( "Content-type:unknown/unknown;" ); 
header ( "Content-disposition: attachment; filename=\"" . $filename . "\"" ); 
header ( 'Content-transfer-encoding: binary' ); 
if ($range = getenv ( 'HTTP_RANGE' )) { // 当有偏移量的时候,采用206的断点续传头 
$range = explode ( '=', $range ); 
$range = $range [1]; 
header ( "HTTP/1.1 206 Partial Content" ); 
header ( "Date: " . gmdate ( "D, d M Y H:i:s" ) . " GMT" ); 
header ( "Last-Modified: " . gmdate ( "D, d M Y H:i:s", filemtime ( $url ) ) . " GMT" ); 
header ( "Accept-Ranges: bytes" ); 
header ( "Content-Length:" . ($filesize - $range) ); 
header ( "Content-Range: bytes " . $range . ($filesize - 1) . "/" . $filesize ); 
header ( "Connection: close" . "\n\n" ); 
else { 
header ( "Content-Length:" . $filesize . "\n\n" ); 
$range = 0; } 
loadFile ( $url );}
function loadFile($filename, $retbytes = true) { 
$buffer = ''; $cnt = 0; $handle = fopen ( $filename, 'rb' ); 
if ($handle === false) { return false; 
} while ( ! feof ( $handle ) ) { 
$buffer = fread ( $handle, 1024 * 1024 ); 
echo $buffer; 
ob_flush (); 
flush (); 
if ($retbytes) { 
$cnt += strlen ( $buffer ); 
} 
} 
$status = fclose ( $handle ); 
if ($retbytes && $status) { 
return $cnt; // return num. bytes delivered like readfile() does. 
} 
return $status;}

输入2个参数即可完成下载 download($url, $filename)

以上所述是小编给大家介绍的PHP下载文件的函数实例代码的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php代码书写习惯优化小结
Jun 20 PHP
PHP cdata 处理(详细介绍)
Jul 05 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
Jul 29 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP常见加密函数用法示例【crypt与md5】
Jan 27 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
Laravel第三方包报class not found的解决方法
Oct 13 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 #PHP
CI框架的安全性分析
May 18 #PHP
PHP的swoole扩展安装方法详细教程
May 18 #PHP
CI框架支持$_GET的两种实现方法
May 18 #PHP
CI框架中$this->load->library()用法分析
May 18 #PHP
CI框架数据库查询之join用法分析
May 18 #PHP
CI框架简单邮件发送类实例
May 18 #PHP
You might like
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP new static 和 new self详解
2017/02/19 PHP
PHP重载基础知识回顾
2020/09/10 PHP
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
python 默认参数问题的陷阱
2016/02/29 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
详解Python的循环结构知识点
2019/05/20 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
python实现自动打卡的示例代码
2020/10/10 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
法学求职信
2014/06/22 职场文书
干部个人对照检查材料
2014/08/25 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
实习护士自荐信
2015/03/25 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
卖车协议书范文
2016/03/23 职场文书
争做文明公民倡议书
2019/06/24 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL