php文件下载原理
来源:互联网 发布:培训机构垃圾 知乎 编辑:程序博客网 时间:2024/05/06 17:59
php文件下载实例:
$filename="1.jpg";/*如果文件名是中文加上这一句,否则找不到文件$filename = iconv("utf-8","gb2312",$filename);*/ header("Content-type:image/jpg"); //告诉浏览器要接受的数据类型//header("Content-type:application/octet-stream"); 二进制传送header('Content-Disposition:attachment:filename="down.jpg'); //弹出下载框时标明的下载的文件的名称header("Content-Length:".filename($filename)); //告诉浏览器接受的文件大小$fp=fopen($filenmae,"r");while(!feof($fp)){echo fread($fp,1024); //此时输出的数据不会输出到浏览器页面,而会直接保存到内存}fclose($fp);// readfile($filename); 快捷读取文件
现在的浏览器能显示的文件格式很多,比如图片,网页文件,文本,还有很多,如果是浏览器能够识别的类型,那么浏览器默认输出显示到页面,如果
是浏览器不认识的类型,那么默认会弹出下载框提示下载,如果你希望你的数据需要保存而不是直接在浏览器上显示,那么你就要特别声明,
怎么声明了呢?
这属于http协议的内容,利用php的header函数改变默认的http协议,直接在headr函数里写http协议字符串即可,
为什么header函数要写在任何html内容的最前面?这也是http协议的相关内容,简单解释一下
HTTP协议包含消息头和消息体(传送的内容),既然要使用http协议那么我们就必须满足http协议的规则,消息头必须需在消息体之前,这样浏览器才能够正确
解析,这也就是header函数之前不能有任何的输出的与原因,
消息头中是规则,消息体是内容,上面代码中的几条header函数就是告诉这次传送的规则,
刚开始我在怀疑下面这行代码可不可以不要,(当时不知道HTTP协议的规则)
header("Content-Length:".filename($filename));
如果你使用抓包工具试一下就会看到每一次接受的服务器的响应中都会有接受文件的大小,默认都有的,其实浏览器并不是我们想的那么智能,
他并不知道接受的数据有多大,需要告诉它应该接受多少,否则会出现数据丢失或多出垃圾信息,这不是本篇文章的主要内容,了解相关内容可通过谷歌搜索
3 0
- php文件下载原理
- php文件下载原理
- PHP文件下载原理
- php文件下载原理
- PHP下载远程文件原理
- PHP远程下载文件原理
- php 文件下载 断点续传 原理
- PHP 弹出文件下载 原理 代码
- php文件下载——断点续传下载的原理
- 详解PHP文件下载的原理和实现
- 详解PHP文件下载的原理和实现
- php下载原理
- HTTP文件下载原理
- PHP实现文件下载
- PHP实现文件下载
- PHP实现文件下载
- php 文件下载类
- php自动下载文件
- 使用List、Set等求交集和并集
- Linux学习记录--磁盘分区,格式化与检验
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
- 查看Ubuntu 中文字体 & 歌曲信息乱码问题
- 挥手包的种类
- php文件下载原理
- EASY_ZJU_PAT_ADVANCED LEVEL_1023 大数乘法
- 数组和list相互转换
- CryptoAPI与openssl数字签名与验证交互
- 教学,第一阶段第一天
- 对于内存监视器中每个参数含义解释
- myEclipse项目转成Eclipse开发
- JavaScript/jQuery、HTML、CSS 构建 Web IM 远程及时聊天通信程序
- ubuntu安装JAVA的openjdk