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 静态变量的初始化
Nov 15 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
php分页函数示例代码分享
Feb 24 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
PHP符合PSR编程规范的实例分享
Dec 21 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
PHP convert_cyr_string()函数讲解
Feb 13 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面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
php比较相似字符串的方法
2015/06/05 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
php mysql 封装类实例代码
2016/09/18 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
2020/08/21 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
js实现数字滚动特效
2019/12/16 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
六个窍门助你提高Python运行效率
2015/06/09 Python
python实现周期方波信号频谱图
2018/07/21 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
顶岗实习接收函
2014/01/09 职场文书
教师自荐信范文
2015/03/06 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
浅谈怎么给Python添加类型标注
2021/06/08 Python
Redis读写分离搭建的完整步骤
2021/09/14 Redis
Django框架之路由用法
2022/06/10 Python