浅析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 相关文章推荐
APMServ使用说明
Oct 23 PHP
可以在线执行PHP代码包装修正版
Mar 15 PHP
10条PHP编程习惯助你找工作
Sep 29 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 PHP
PHP实现采集抓取淘宝网单个商品信息
Jan 08 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
php查看一个变量的占用内存的实例代码
Mar 29 PHP
PHP安全之register_globals的on和off的区别
Jul 23 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
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
javascript parseInt与Number函数的区别
2010/01/21 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
数组越界问题
2015/10/21 面试题
学生感冒英文请假条
2014/02/04 职场文书
善意的谎言事例
2014/02/15 职场文书
家长对学生的评语
2014/04/18 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
厂区绿化方案
2014/05/08 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
开票证明
2015/06/23 职场文书
导游词之无锡唐城
2019/12/12 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
java实现对Hadoop的操作
2021/07/01 Java/Android
python脚本框架webpy模板控制结构
2021/11/20 Python
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫