PHP 利用 ZipArchive 將多個檔案生成壓縮包並下載 和解壓壓縮包
阿新 • • 發佈:2019-02-14
本人是在工作中需要將阿里雲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;
解壓的功能後續加上去