浅析PHP文件下载原理


Posted in PHP onDecember 25, 2014

1、php下载原理图

浅析PHP文件下载原理

2、文件下载源码:

<?php

$file_name="哈哈.jpg";//需要下载的文件

$file_name=iconv("utf-8","gb2312","$file_name");

$fp=fopen($file_name,"r+");//下载文件必须先要将文件打开,写入内存

if(!file_exists($file_name)){//判断文件是否存在

    echo "文件不存在";

    exit();

}

$file_size=filesize("a.jpg");//判断文件大小

//返回的文件

Header("Content-type: application/octet-stream");

//按照字节格式返回

Header("Accept-Ranges: bytes");

//返回文件大小

Header("Accept-Length: ".$file_size);

//弹出客户端对话框,对应的文件名

Header("Content-Disposition: attachment; filename=".$file_name);

//防止服务器瞬时压力增大,分段读取

$buffer=1024;

while(!feof($fp)){

    $file_data=fread($fp,$buffer);

    echo $file_data;

}

//关闭文件

fclose($fp);

?>

3、文件编码问题解决方法:

如果文件名是中文,php的函数不能识别中文文件名,一般如果程序编码为utf-8,php的函数比较古老,只能识别gb2312编码的中文,所以把中文用iconv(“原编码”,”要转成的编码”,”要转码的字符串”)函数可以转码。

比如,把一个字符串从utf-8转码为gb2312

$file_name=iconv(“utf-8”,”gb2312”,”$file_name”);

PHP 相关文章推荐
PHP静态新闻列表自动生成代码
Jun 14 PHP
PHP面向对象分析设计的经验原则
Sep 20 PHP
phpMyadmin 用户权限中英对照
Apr 02 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
jQuery+php实现ajax文件即时上传的详解
Jun 17 PHP
thinkphp的CURD和查询方式介绍
Dec 19 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
thinkphp配置连接数据库技巧
Dec 02 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
php集成开发环境详解
Sep 24 PHP
php使用sql server验证连接数据库的方法
Dec 25 #PHP
php实现mysql事务处理的方法
Dec 25 #PHP
php使用pdo连接mssql server数据库实例
Dec 25 #PHP
php连接与操作PostgreSQL数据库的方法
Dec 25 #PHP
完整删除ecshop中获取店铺信息的API
Dec 24 #PHP
php连接odbc数据源并保存与查询数据的方法
Dec 24 #PHP
thinkPHP实现表单自动验证
Dec 24 #PHP
You might like
德生S2000电路分析
2021/03/02 无线电
浅谈php的优缺点
2015/07/14 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
XML的代替者----JSON
2007/07/21 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
js变换显示图片的实例
2013/04/16 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
python正则表达式之作业计算器
2016/03/18 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
Python3.5运算符操作实例详解
2019/04/25 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
python交互模式基础知识点学习
2020/06/18 Python
大学生演讲稿
2014/04/25 职场文书
会计求职自荐信
2014/06/20 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
机械生产实习心得体会
2016/01/22 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电