浅析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 相关文章推荐
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
php模块memcache和memcached区别分析
Jun 14 PHP
php将时间差转换为字符串提示
Sep 07 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
php动态生成函数示例
Mar 21 PHP
php获取本周开始日期和结束日期的方法
Mar 09 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP树形结构tree类用法示例
Feb 01 PHP
php实现记事本案例
Oct 20 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
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
自荐信范文
2013/12/10 职场文书
军训 自我鉴定
2014/02/03 职场文书
婚庆司仪主持词
2014/03/15 职场文书
针对吵架老公保证书
2015/05/08 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
深入解析MySQL索引数据结构
2021/10/16 MySQL
Python 数据可视化之Bokeh详解
2021/11/02 Python