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+mysql保存和输出文件
Oct 09 PHP
人大复印资料处理程序_补充篇
Oct 09 PHP
cache_lite试用
Feb 14 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
php 文本文件的读取效率
Feb 10 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
Oct 30 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
PHP下载文件的函数实例代码
May 18 PHP
PHP PDOStatement::bindParam讲解
Jan 30 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 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
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
如何防止JavaScript自动插入分号
2015/11/05 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python 获取url中的参数列表实例
2018/12/18 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Python的log日志功能及设置方法
2019/07/11 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
经济管理毕业生求职信
2014/03/15 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android