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 和 HTML
Oct 09 PHP
php IP及IP段进行访问限制的代码
Dec 17 PHP
PHP提取数据库内容中的图片地址并循环输出
Mar 21 PHP
延长phpmyadmin登录时间的方法
Feb 06 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
php中使用websocket详解
Sep 23 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
PHP微信分享开发详解
Jan 14 PHP
PHP在linux上执行外部命令的方法
Feb 06 PHP
Laravel 实现添加多语言提示信息
Oct 25 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令牌 Token改进版
2008/07/18 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
Python实现Const详解
2015/01/27 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
对python的输出和输出格式详解
2018/12/08 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
详解python中docx库的安装过程
2019/11/08 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
放飞蜻蜓反思
2014/02/05 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
个人合作协议范本
2015/08/06 职场文书
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS