• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php 实现文件下载

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、php下载原理图

2、文件下载源码:

 
 1 <?php
 2 $file_name="umiwi.apk";//需要下载的文件
 3 $file_dir = "./"; //文件目录
 4 $file_path = $file_dir.$file_name;//文件路径
 5 $file_name=iconv("utf-8","gb2312","$file_name");
 6 $fp=fopen($file_dir.$file_name,"r+");//下载文件必须先要将文件打开,写入内存
 7 if(!file_exists($file_dir.$file_name)){//判断文件是否存在
 8     echo "文件不存在";
 9     exit();
10 }
11 $file_size=filesize($file_dir.$file_name);//判断文件大小
12 
13 //返回的文件
14 Header("Content-type: application/octet-stream");
15 //按照字节格式返回
16 Header("Accept-Ranges: bytes");
17 //返回文件大小
18 Header("Accept-Length: ".$file_size);
19 //弹出客户端对话框,对应的文件名
20 Header("Content-Disposition: attachment; filename=".$file_name);
21 //防止服务器瞬时压力增大,分段读取
22 $buffer=1024;
23 while(!feof($fp)){
24     $file_data=fread($fp,$buffer);
25     echo $file_data;
26 }
27 //关闭文件
28 fclose($fp);
29 ?>

 

3、文件编码问题解决方法:

  如果文件名是中文,php的函数不能识别中文文件名,一般如果程序编码为utf-8,php的函数比较古老,只能识别gb2312编码的中文,所以把中文用iconv(“原编码”,”要转成的编码”,”要转码的字符串”)函数可以转码。

  比如,把一个字符串从utf-8转码为gb2312

  $file_name=iconv(“utf-8”,”gb2312”,”$file_name”);

4、几点注意事项: 

header("Content-type:text/html;charset=utf-8")的作用:在服务器响应浏览器的请求时,告诉浏览器以编码格式为UTF-8的编码显示该内容 
关于file_exists()函数不支持中文路径的问题:因为php函数比较早,不支持中文,所以如果被下载的文件名是中文的话,需要对其进行字符编码转换,否则file_exists()函数不能识别,可以使用iconv()函数进行编码转换 
$file_path 是文件路径,若采用绝对路径,执行效率要比相对路径高 
Header("Content-type: application/octet-stream")的作用:通过这句代码客户端浏览器就能知道服务端返回的文件形式 
Header("Accept-Ranges: bytes")的作用:告诉客户端浏览器返回的文件大小是按照字节进行计算的 
Header("Accept-Length:".$file_size)的作用:告诉浏览器返回的文件大小 
Header("Content-Disposition: attachment; filename=".$file_name)的作用:告诉浏览器返回的文件的名称 
以上四个Header()是必需的 
fclose($fp)可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
让Apache支持PHP5发布时间:2022-07-10
下一篇:
PHP获取文件创建日期发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap