fastadmin匯出圖片zip檔案

cx小橙發表於2024-09-09

不清楚 fastadmin 自定義搜尋 帶入 export 的 可以看上一篇

    /**
     * 匯出zip
     */
    public function export(){
        
        $filter = $this->request->param("filter");

        list($where, $sort, $order, $offset, $limit) = $this->buildparams();


        $path =  str_replace('\\','/',realpath(dirname(__FILE__).'/../../../../'))."/public/file/qrcode/".date('Ymd')."/";
        $zip_path =  str_replace('\\','/',realpath(dirname(__FILE__).'/../../../../'))."/public/file/qrcode/zip";
            
            if(!file_exists($path)){
                mkdir($path,0777,true);
            }
            
            $list = $this->model
                ->where($where)
                ->order($sort, $order)
                ->select();

            if(empty($list)){
                return json(array('code'=>1,'error'=>"暫無記錄"));
            }
            
            $arr = [];
            foreach ($list as $key => $val) {
                if($val['qrcode_image'] != ""){
                    // 遍歷每個,生成對應的圖片檔案並新增到資料夾
                    $imageData = @file_get_contents(config('site.api_url').$val['qrcode_image']);
                    $imageName = $path . $val['qrcode'] . ".png";
                    file_put_contents($imageName, $imageData);
                }
            }
            
            if(!file_exists($zip_path)){
            mkdir($zip_path,0777,true);
            }
            
            
            $zip_name = date('YmdHis').rand(1000,9999);
            //$url = "/file/qrcode/zip/".$zip_name.".zip";
    
            Makezip::zip($path,$zip_path."/".$zip_name.".zip");
            
            // // 輸出到瀏覽器下載
            header('Content-Type: application/zip');
            header('Content-Transfer-Encoding: Binary');
            header('Content-disposition: attachment; filename='.$zip_name.".zip");
            header('Content-Length: ' . filesize($zip_path."/".$zip_name.".zip"));
            // 這兩行很重要,不然可能會出現解壓的時候提示檔案損壞
            ob_clean();
            flush();
            readfile($zip_path."/".$zip_name.".zip");
            
            // // 刪除伺服器上的ZIP檔案(可選)
            // unlink($zip_path."/".$zip_name.".zip");
            

        

    }

相關文章