打包下載,首先你要確保你打包這些文件都在同一個文件夾裏面。直接上代碼php
頁面代碼:就一個a標籤html
<a target="_blank" href="tasks/download_files" > 批量下載任務文件</a>
控制器:瀏覽器
public function download_files(){ //要打包的文件 $files = ['uploads/task/task1.xls','uploads/task/task2.xls','uploads/task/task2.xls']; $zip = new \ZipArchive; //壓縮文件名 $filename = 'uploads/task/download.zip'; //新建zip壓縮包 $zip->open($filename,\ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE); //把文件一個一個加進去壓縮 foreach ($files as $key => $value) { $zip->addFile($value,basename($value)); } // 打包zip $zip->close(); header("Cache-Control: public"); header("Content-Description: File Transfer"); header('Content-disposition: attachment; filename='.basename($filename)); //文件名 header("Content-Type: application/zip"); //zip格式的 header("Content-Transfer-Encoding: binary"); //告訴瀏覽器,這是二進制文件 header('Content-Length: '. filesize($filename)); //告訴瀏覽器,文件大小 @readfile($filename); }
這裏要注意一下 文件地址,都是 相對路徑,不能寫絕對路徑,也就是 uploads 前 不能加 /app