浅析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 相关文章推荐
PHP5中MVC结构学习
Oct 09 PHP
如何在WIN2K下安装PHP4.04
Oct 09 PHP
PHP与C#分别格式化文件大小的代码
May 14 PHP
php注销代码(session注销)
May 31 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 PHP
php函数与传递参数实例分析
Nov 15 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
PHP访问Google Search API的方法
Mar 05 PHP
PHP使用array_fill定义多维数组的方法
Mar 18 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
php单元测试phpunit入门实例教程
Nov 17 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 高效率写法 推荐
2010/02/21 PHP
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
使用js 设置url参数
2013/07/08 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
javascript数组排序汇总
2015/07/07 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
Js面试算法详解
2018/04/08 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
Python基于有道实现英汉字典功能
2015/07/25 Python
Python实现批量压缩图片
2018/01/25 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
PHP如何设置和取得Cookie值
2015/06/30 面试题
擅自离岗检讨书
2014/02/11 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
2014年生产部工作总结
2014/12/17 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
2016年学校招生广告语
2016/01/28 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
java设计模式--原型模式详解
2021/07/21 Java/Android