浅析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 IF ELSE简化/三元一次式的使用
Aug 22 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
详解PHP队列的实现
Mar 14 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 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 str_pad 函数用法简介
2009/07/11 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
便捷提取python导入包的属性方法
2018/10/15 Python
Python----数据预处理代码实例
2019/03/20 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
如何用python写个模板引擎
2021/01/14 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
应届生自荐信
2014/06/30 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
银行转正自我鉴定
2014/09/29 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
整改落实自查报告
2014/11/05 职场文书