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 相关文章推荐
Discuz板块横排显示图片的实现方法
May 28 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
phpMyAdmin 安装配置方法和问题解决
Jun 08 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
那些年一起学习的PHP(三)
Mar 22 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
PHP异常处理浅析
May 12 PHP
10款实用的PHP开源工具
Oct 23 PHP
浅析Yii2缓存的使用
May 10 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
PHP封装请求类实例分析【基于Yii框架】
Oct 17 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
社区(php&&mysql)二
2006/10/09 PHP
一步一步学习PHP(8) php 数组
2010/03/05 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
php可变长参数处理函数详解
2017/02/22 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
javascript新手语法小结
2008/06/15 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
python实现机器人行走效果
2018/01/29 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
大韩航空官方网站:Korean Air
2017/10/25 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
什么是GWT的Module
2013/01/20 面试题
教师年度考核自我鉴定
2014/01/19 职场文书
《识字五》教学反思
2014/03/01 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记