1. 程式人生 > >PHP 利用 ZipArchive 將多個檔案生成壓縮包並下載 和解壓壓縮包

PHP 利用 ZipArchive 將多個檔案生成壓縮包並下載 和解壓壓縮包

本人是在工作中需要將阿里雲oss的圖片通過頁面進行多選,然後生成壓縮包的形式下載,由於oss不支援改功能,則使用的 ZipArchive 進行壓縮下載
下面是方法:

        $zipname = tempnam(__dir__.'/log', '');
        $zip = new ZipArchive();

        if ($zip->open($zipname, ZIPARCHIVE::CREATE) !== TRUE) {
            exit ('無法開啟檔案,或者檔案建立失敗');
        }
        // 圖片的路徑,可以是多個檔案
        $files = [ 'YNRJZHKnMm.jpg' ];

        $zip->open($zipname, ZipArchive::CREATE);
        foreach ($files as $file) {
              
            $fileContent = file_get_contents($file);
            $file = iconv('utf-8', 'GBK', basename($file));
            $zip->addFromString($file, $fileContent);
        }
        $zip->close();

        header('Content-Type: application/zip;charset=utf8');
        header('Content-disposition: attachment; filename=附件' . date('Y-m-d') . '.zip');
        header('Content-Length: ' . filesize($zipname));
        readfile($zipname);
        unlink($zipname);
        die;

解壓的功能後續加上去