1、原始方案,直接瀏覽器輸出下載【卒】
$xlsWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); // ob_end_clean();//清除緩衝區,避免亂碼 // header('Content-Type: application/vnd.ms-excel'); // header('Content-Disposition: attachment;filename="訂單列表.xls"');
//$xlsWriter->save('test.xls');
2、改成先存服務器磁盤,定期刪除,返回url給前端
//新建當日日期文件夾 $dir = iconv("UTF-8", "GBK", "./uploads/".date("Ymd",time())); if (!file_exists($dir)){ mkdir($dir,0777,true); }; //刪除昨日日期文件夾下.xlsx文件 $folderpath = './uploads/'.date("Ymd",strtotime("-1 day"));//要操作的目錄 $this->deldir($folderpath); $title = date("His",time()).'.xls'; //將文件上傳到文件夾 $xlsWriter->save($dir.'/'.$title); //表示在$path路徑下面生成.xlsx文件 $url = $_SERVER['SERVER_NAME'].'/uploads/'.date("Ymd",time()).'/'.$title; $data['url'] = $url; return resultArray(['data' => $data]);
private function deldir($path){
//如果是目錄則繼續
if(is_dir($path)){
//掃描一個文件夾內的所有文件夾和文件並返回數組
$p = scandir($path);
foreach($p as $val){
//排除目錄中的.和..
if($val !="." && $val !=".."){
//如果是目錄則遞歸子目錄,繼續操作
if(is_dir($path.$val)){
//子目錄中操作刪除文件夾和文件
deldir($path.$val.'/');
//目錄清空後刪除空文件夾
@rmdir($path.$val.'/');
}else{
//如果是.xlsx文件直接刪除
$result = glob($path.'/*.xlsx');
foreach($result as $file){
unlink($file);
}
}
}
}
}
}
前端下載
window.open('https://'+res.data.url)