PHPExcel導出返回路徑問題(前後端分離前端必須獲取信息)

PHPExcel文檔中  導出的寫法是使用header直接下載後就退出方法了  並沒有返回值

原代碼是這樣的:(可看我上篇博客)


$PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, "Excel2007");
header('Content-Disposition: attachment;filename="表單數據.xlsx"');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$PHPWriter->save("php://output"); //表示在$path路徑下面生成demo.xlsx文件

修改後這樣:

$PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, "Excel2007");
// header('Content-Disposition: attachment;filename="表單數據.xlsx"');
// header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
// $PHPWriter->save("php://output"); //表示在$path路徑下面生成demo.xlsx文件
$PHPWriter->save('./uploads/test.xlsl'); //表示在$path路徑下面生成.xlsx文件

主要是註釋掉header不讓他下載  然後save到你自己要保存上傳到的路徑上,這樣寫死 test.xlsl上傳會覆蓋,所以可以改動一下:

 以日期新建一個文件夾,方便後期刪除,在文件夾下以時分秒新建文件

//新建當日日期文件夾
$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()).'.xlsx';
//將文件上傳到文件夾
$PHPWriter->save($dir.'/'.$title); //表示在$path路徑下面生成.xlsx文件
$url = $_SERVER['SERVER_NAME'].'/uploads/'.date("Ymd",time()).'/'.$title;
$data = [];
$data = ["url"=> $url];
return json(["code"=>200,"data"=>$data,'msg'=>'請求成功']);

 

 刪除的方法是:

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);
                        }
                    }
                }
            }
        }
    }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章