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写的serv-u的web申请账号的程序
Oct 09 PHP
PHP安全配置
Dec 06 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
php实现mysql事务处理的方法
Dec 25 PHP
php使用parse_url和parse_str解析URL
Feb 22 PHP
php发送http请求的常用方法分析
Nov 08 PHP
THinkPHP获取客户端IP与IP地址查询的方法
Nov 14 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 PHP
PHP7 新增常量
Mar 09 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 验证码制作(网树注释思想)
2009/07/20 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
php简单smarty入门程序实例
2015/06/11 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
JS常用函数使用指南
2014/11/23 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
六道php面试题附答案
2014/06/05 面试题
线程同步的方法
2016/11/23 面试题
经典大学生求职信范文
2014/01/06 职场文书
监察建议书
2015/02/04 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
高三英语教学反思
2016/03/03 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang