php 批量壓縮圖片并下載

        $images = []; // 為圖片路徑數(shù)組
        //$images的格式為$images=array('xxxx.jpg','yyyy.jpg');可以根據(jù)需要自己修改
        $filename = "./public/upload/" . date ( 'YmdHis' ) . ".zip";
        // 生成文件
        $zip = new ZipArchive();
        // 使用本類,linux需開啟zlib,windows需取消php_zip.dll前的注釋
        if ($zip->open ($filename ,\ZipArchive::OVERWRITE) !== true) {
            //OVERWRITE 參數(shù)會(huì)覆寫壓縮包的文件 文件必須已經(jīng)存在
            if($zip->open ($filename ,\ZipArchive::CREATE) !== true){
                // 文件不存在則生成一個(gè)新的文件 用CREATE打開文件會(huì)追加內(nèi)容至zip
                exit ( '無(wú)法打開文件,或者文件創(chuàng)建失敗' );
            }
        }
        foreach($images as $key => $v){
           // $v['swfimglist'] =  substr($v['swfimglist'],1);
            //addEmptyDir沒搞明白有什么用,就是多了一個(gè)文件夾
            $zip->addEmptyDir("attach");
            //iconv('utf-8','gb2312',$v),因?yàn)槲业?v中含有中文,file_exists不識(shí)別中文,需要轉(zhuǎn)碼
            $urlfile=iconv('utf-8','gb2312',$v);
            $urlfile = str_replace('https://xmzq.xinfeng345.com','.',$urlfile);
           
            if(file_exists($urlfile)){
                //get_basename($v),原來(lái)的basename()不識(shí)別中文,新建函數(shù)獲取文件名
                //iconv('utf-8','gb2312',get_basename($v))還是中文問題,沒有中文的話basename($v)即可
                $zip->addFile($urlfile, iconv('utf-8','gb2312',$this->get_basename($v)));
            } else {
                // die('圖片地址不對(duì)哦');
                echo 'error';
                //刪除在服務(wù)器上創(chuàng)建的$filename壓縮文件
                @unlink($filename);
                exit;
            }
        }
        // 關(guān)閉
        $zip->close();
        //下面是輸出下載;
        header ( "Cache-Control: max-age=0" );
        header ( "Content-Description: File Transfer" );
        header ( 'Content-disposition: attachment; filename=' . basename ( $filename ) ); // 文件名
        header ( "Content-Type: application/zip" ); // zip格式的
        header ( "Content-Transfer-Encoding: binary" ); // 告訴瀏覽器,這是二進(jìn)制文件
        header ( 'Content-Length: ' . filesize ( $filename ) ); // 告訴瀏覽器,文件大小
        @readfile ( $filename );//輸出文件;
        @unlink($filename);
        exit;
    }
    
    
    function get_basename($filename){
        return preg_replace('/^.+[\\\\\\/]/', '', $filename);
    }
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容