php实现文件下载实例分享


Posted in PHP onJune 02, 2014

举一个案例:

<?php
class Downfile {    function downserver($file_name){
$file_path = "./img/".$file_name;
//转码,文件名转为gb2312解决中文乱码
$file_name = iconv("utf-8","gb2312",$file_name);
$file_path = iconv("utf-8","gb2312",$file_path);
$fp = fopen($file_path,"r") or exit("文件不存在");
//定义变量空着每次下载的大小
$buffer = 1024;
//得到文件的大小
$file_size = filesize($file_path);
//header("Content-type:text/html;charset=gb2312");
//会写用到的四条http协议信息
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");//可以忽略
header("Content-Length: ".$file_size);//原文这里是Accept-Length经查阅http协议无此项
header("Content-Disposition:attachment;filename=".$file_name);
//字节技术器,纪录当前现在字节数
$count = 0;
while(!feof($fp) && $file_size-$count>0){
//从$fp打开的文件流中每次读取$buffer大小的数据
$file_data = fread($fp,$buffer);
$count+=$buffer;
//将读取到的数据读取出来
echo $file_data;
}
//关闭文件流
fclose($fp);
    }
   }
?>

调用这个函数传入文件名就能对文件实现下载,不过要注意修改$file_path

PHP 相关文章推荐
PHP 地址栏信息的获取代码
Jan 07 PHP
php下使用SimpleXML 处理XML 文件
Feb 27 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
PHP set_error_handler()函数使用详解(示例)
Nov 12 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
php实现网站留言板功能
Nov 04 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
PHP单例模式简单用法示例
Jun 23 PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 PHP
php+js实现异步图片上传实例分享
Jun 02 #PHP
php实例分享之html转为rtf格式
Jun 02 #PHP
php 伪静态之IIS篇
Jun 02 #PHP
php伪静态之APACHE篇
Jun 02 #PHP
50个PHP程序性能优化的方法
Jun 02 #PHP
浅谈php扩展imagick
Jun 02 #PHP
PHP小技巧之函数重载
Jun 02 #PHP
You might like
JavaScript 事件的一些重要说明
2009/10/25 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
js中eval详解
2012/03/30 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python中操作符重载用法分析
2016/04/29 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
python实现猜单词游戏
2020/05/22 Python
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
Html5定位终极解决方案
2020/02/05 HTML / CSS
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
PHP面试题附答案
2015/11/28 面试题
C语言变量的命名规则都有哪些
2013/12/27 面试题
UML设计模式笔试题
2014/06/07 面试题
学习新党章思想汇报
2014/01/09 职场文书
家长写给老师的建议书
2014/03/13 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
2014年创卫工作总结
2014/11/24 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
2016幼儿园新学期寄语
2015/12/03 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS