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执行速度全攻略(下)
Oct 09 PHP
PHP调用三种数据库的方法(3)
Oct 09 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
使用php实现下载生成某链接快捷方式的解决方法
May 07 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
Dec 04 PHP
PHP递归实现层级树状展开
Apr 01 PHP
PHP微信支付开发实例
Jun 22 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 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判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
Python实现图像几何变换
2015/07/06 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
英国大码女性时装零售商:Evans
2018/08/29 全球购物
应聘编辑自荐信范文
2014/03/12 职场文书
环保小标语
2014/06/13 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
初中团委工作总结
2015/08/13 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
Python基础 括号()[]{}的详解
2021/11/07 Python
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js