/** * 封装下载文件函数 * @param $file_name-----下载文件名 * @param $file_sub_dir----下载文件的子路径 */ function fileDown($file_name,$file_sub_dir){ //如果下载文件是中文则需要转码--原因 php文件函数,比较古老,需要对中文转码 gb2312 $file_name=iconv("utf-8","gb2312",$file_name); //要下载文件的绝对路径 $file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name; echo $file_path; //打开下载文件,首先判断文件是否存在 if(!file_exists($file_path)){ echo "<script type='application/javascript'>window.alert('文件不存在!')</script>"; return; } $fp=fopen($file_path,'r'); //清空缓冲器才不会导致文件下载成功但是无法正常查看(ps:重点---如果不清除缓存内容则常常会出现显示错误) ob_clean(); //打开文件之后获取文件大小 $file_size=filesize($file_path); //服务器返回到获取数据 //返回的文件 header("Content-type: application/octet-stream"); //按照字节大小返回 header("Accept-Ranges: bytes"); //返回文件大小 header("Accept-Length: $file_size"); //这里客户端的弹出对话框,对应的文件名 header("Content-Disposition: attachment; filename=".$file_name); //向客户端回送数据 $buffer=1024; $file_count=0; while (!feof($fp) && ($file_size-$file_count>0)){ $file_data=fread($fp,$buffer); //统计读了多少字节 $file_count+=$buffer; echo $file_data; } //用完必须关闭资源 fclose($fp); } fileDown("1.bmp","/images/");
php中文件下载原理源代码展示
最新推荐文章于 2021-03-09 19:38:58 发布