1 <?php
2 //对函数的说明
3 //参数说明 $file_name 文件名
4 // $file_sub_dir: 下载文件的子路径 '"/xxx/xxx/"
5 function down_file($file_name,$file_sub_dir){
6 //死去活来,演示下载一个图片.
7 //如果文件是中文.
8
9
10 //原因 php文件函数,比较古老,需要对中文转码 gb2312
11 $file_name=iconv("utf-8","gb2312",$file_name);
12 //绝对路径
13 $file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;
14 //如果你希望绝对路径
15
16 //1.打开文件
17 //echo $file_path; //要是加上这句则下载下来的文件会打不开
18 if(!file_exists($file_path)){
19 echo "文件不存在!";
20 return ;
21 }
22 $fp=fopen($file_path,"r");
23
24 //获取下载文件的大小
25 $file_size=filesize($file_path);
26 // if($file_size>30){
27
28 // echo "<script language='javascript'>window.alert('过大')</script>";
29 // return ;
30 // }
31 //返回的文件
32 header("Content-type: application/octet-stream");
33 //按照字节大小返回
34 header("Accept-Ranges: bytes");
35 //返回文件大小
36 header("Accept-Length: $file_size");
37 //这里客户端的弹出对话框,对应的文件名
38 header("Content-Disposition: attachment; filename=".$file_name);
39 //向客户端回送数据
40
41 $buffer=1024;
42 //为了下载的安全,我们最好做一个文件字节读取计数器
43 $file_count=0;
44 //这句话用于判断文件是否结束
45 while(!feof($fp) && ($file_size-$file_count>0) ){
46 $file_data=fread($fp,$buffer);
47 //统计读了多少个字节
48 $file_count+=$buffer;
49 //把部分数据回送给浏览器;
50 echo $file_data;
51 }
52 //关闭文件
53 fclose($fp);
54 }
55 //测试函数是否可用
56 down_file("Day by Day 完整版.mp4","/html5/");