这两天项目交付,把代码部署到服务器上后下载的excel模板居然打不开了,后面把代码copy到本地也是文件能正常下载,但是打不开。。。如图:
后面到网上百度了找到了解决的办法 ----- 在输出文件之前清除缓存(ob_clean())
下面是主要代码:
1 /*** 2 * @param $file_url 3 * @param string $new_name 4 * 下载excel模板 5 */ 6 public function download($file_url,$new_name='') 7 { 8 if(!isset($file_url)||trim($file_url)==''){ 9 echo '500';10 }11 if(!file_exists($file_url)){ //检查文件是否存在12 echo '404';13 }14 $file_name=basename($file_url);//获取文件名加后缀名15 $file_type=explode('.',$file_url);16 $file_type=$file_type[count($file_type)-1];17 $file_name=trim($new_name=='')?$file_name:urlencode($new_name);18 $file_type=fopen($file_url,'r'); //打开文件19 //输入文件标签20 header("Content-type: application/octet-stream;charset=utf-8");21 header("Accept-Ranges: bytes");22 header("Accept-Length: ".filesize($file_url));23 header("Content-Disposition: attachment; filename=".$file_name);24 25 ob_clean();26 //输出文件内容27 echo fread($file_type,filesize($file_url));28 fclose($file_type);29 }
做笔记使用!