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_Flame(Version:Progress)的原代码
Oct 09 PHP
PHP生成网页快照 不用COM不用扩展.
Feb 11 PHP
php str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
php递归使用示例(php递归函数)
Feb 14 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 PHP
php图像处理类实例
Jul 28 PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
php 数组二分法查找函数代码
2010/02/16 PHP
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
简单了解python元组tuple相关原理
2019/12/02 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
会计电算化学生个人的自我评价
2014/02/08 职场文书
计算机实训报告总结
2014/11/05 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python