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 相关文章推荐
递归删除一个节点以及该节点下的所有节点示例
Mar 19 PHP
解决cPanel无法安装php5.2.17
Jun 22 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
php使用pdo连接并查询sql数据库的方法
Dec 24 PHP
php获取文件后缀的9种方法
Mar 22 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 PHP
laravel手动创建数组分页的实现代码
Jun 07 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
PHP的PDO连接讲解
Jan 24 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 11 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:风雨欲来 路在何方?
2006/10/09 PHP
一家之言的经验之谈php+mysql扎实个人基本功
2008/03/27 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
PHP7引入的"??"和"?:"的区别讲解
2019/04/08 PHP
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
itchat接口使用示例
2017/10/23 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
python爬虫实现获取下一页代码
2020/03/13 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
彪马美国官网:PUMA美国
2017/03/09 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
五年级音乐教学反思
2014/02/06 职场文书
创建文明学校实施方案
2014/03/11 职场文书
升职演讲稿范文
2014/05/23 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
python 对图片进行简单的处理
2021/06/23 Python