浅析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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
May 27 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 PHP
php中strtotime函数性能分析
Nov 20 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 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 彩色文字实现代码
2009/06/29 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
php实现登陆模块功能示例
2016/10/20 PHP
php上传excel表格并获取数据
2017/04/27 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
Django开发的简易留言板案例详解
2018/12/04 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
如何定义TensorFlow输入节点
2020/01/23 Python
python识别验证码图片实例详解
2020/02/17 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
python和go语言的区别是什么
2020/07/20 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
Servlet如何得到服务器的信息
2015/12/22 面试题
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
2014年环保局工作总结
2014/12/11 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
Python类方法总结讲解
2021/07/26 Python
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis