php前后端分离导出excel问题


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)


					


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM