php下载原理

       php下载原理:用户向服务器端发送一个下载文件的请求,服务器端响应之后,在内存中打开,读取文件信息,关闭文件,基本是这个步骤的。

       比如下载一个文件名为win.jpg的文件,在下载页面的代码中就需要先判断if(file_exists($文件名)),不存在的话提示文件不存在,存在的话就继续往下面执行,打开文件,用fopen($filename)函数打开文件,用filesize()函数判断一下文件大小。接下来的这段:

//返回文件(告诉浏览器)

header("Content-type:application/octet-stream");
 //按照字节大小返回
 header("Accept-Ranges:bytes");
 //返回文件的大小
 header("Accept-Length:$file_size");
 //弹窗,对应的文件名
 header("Content-Disposition:attachment;filename=".$file_name);

然后定义一个$buffer,就是每次读文件的大小,

while(!feof($fp)){
 
 $fil= fread($fp,$buffer);
 echo $fil;
 }

feof函数时候判断是否到达文件结尾了,然后就用fread()函数开始读取数据,每次读取数据量为$buffer,这个$buffer一般是以字节为单位的,可以直接设置数字的。读完之后别忘了给浏览器返回结果。

最后用fclose()关闭文件。

中文乱码问题用iconv("utf-8","gb2312",$filename)解决。
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值