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 相关文章推荐
在PWS上安装PHP4.0正式版
Oct 09 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
php intval的测试代码发现问题
Jul 27 PHP
PHP XML备份Mysql数据库
May 27 PHP
php快速url重写 更新版[需php 5.30以上]
Apr 20 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
Oct 15 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
浅析php-fpm静态和动态执行方式的比较
Nov 09 PHP
PHP符合PSR编程规范的实例分享
Dec 21 PHP
PHP操作Postgresql封装类与应用完整实例
Apr 24 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
php&amp;java(一)
2006/10/09 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
python实现随机梯度下降法
2020/03/24 Python
详解如何设置Python环境变量?
2019/05/13 Python
Python文件路径名的操作方法
2019/10/30 Python
Python笔记之代理模式
2019/11/20 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
python实现密码强度校验
2020/03/18 Python
2014和解协议书范文
2014/09/15 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
北京爱情故事观后感
2015/06/12 职场文书
会议简报格式范文
2015/07/20 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android