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基础知识:类与对象(3) 构造函数和析构函数
Dec 13 PHP
功能齐全的PHP发送邮件类代码附详细说明
Jul 10 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
php获取本周开始日期和结束日期的方法
Mar 09 PHP
php输出指定时间以前时间格式的方法
Mar 21 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
PHP操作路由器实现方法示例
Apr 27 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读取IMAP邮件
2006/10/09 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
python使用range函数计算一组数和的方法
2015/05/07 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
python基于Selenium的web自动化框架
2019/07/14 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
硕士研究生自我鉴定
2013/11/08 职场文书
优秀民警事迹材料
2014/01/29 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
公务员年度个人总结
2015/02/12 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
sql注入教程之类型以及提交注入
2021/08/02 MySQL
python库sklearn常用操作
2021/08/23 Python
利用JavaScript写一个简单计算器
2021/11/27 Javascript
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle