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 26 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
php使用codebase生成随机数
Mar 25 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
分享3个php获取日历的函数
Sep 25 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
PHP类相关知识点实例总结
Sep 28 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
使用PHPMailer发送邮件实例
Feb 15 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 编写安全的代码时容易犯的错误小结
2010/05/20 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
基于PHP制作验证码
2016/10/12 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
基于jquery的气泡提示效果
2010/05/31 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
JS中的BOM应用
2018/02/02 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
python获取当前计算机cpu数量的方法
2015/04/18 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
python实现redis三种cas事务操作
2017/12/19 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
python验证身份证信息实例代码
2019/05/06 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
国际书籍零售商:Wordery
2017/11/01 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
市场拓展计划书
2014/05/03 职场文书
医药销售自荐书
2014/05/29 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
成绩报告单家长评语
2014/12/30 职场文书
成绩单评语
2015/01/04 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python