您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何用Laravel創(chuàng)建Zip文件并實(shí)現(xiàn)下載”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“如何用Laravel創(chuàng)建Zip文件并實(shí)現(xiàn)下載”吧!
Laravel 中創(chuàng)建 Zip 壓縮文件并提供下載
如果您需要您的用戶(hù)支持多文件下載的話(huà),最好的辦法是創(chuàng)建一個(gè)壓縮包并提供下載??聪略?Laravel 中的實(shí)現(xiàn)。
事實(shí)上,這不是關(guān)于 Laravel 的,而是和 PHP 的關(guān)聯(lián)更多,我們準(zhǔn)備使用從 PHP 5.2 以來(lái)就存在的 ZipArchive 類(lèi) ,如果要使用,需要確保php.ini 中的 ext-zip 擴(kuò)展開(kāi)啟。
下面是代碼展示:
$zip_file = 'invoices.zip'; // 要下載的壓縮包的名稱(chēng) // 初始化 PHP 類(lèi) $zip = new \ZipArchive(); $zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); $invoice_file = 'invoices/aaa001.pdf'; // 添加文件:第二個(gè)參數(shù)是待壓縮文件在壓縮包中的路徑 // 所以,它將在 ZIP 中創(chuàng)建另一個(gè)名為 "storage/" 的路徑,并把文件放入目錄。 $zip->addFile(storage_path($invoice_file), $invoice_file); $zip->close(); // 我們將會(huì)在文件下載后立刻把文件返回原樣 return response()->download($zip_file);
例子很簡(jiǎn)單,對(duì)嗎?
Laravel 方面不需要有任何改變,我們只需要添加一些簡(jiǎn)單的 PHP 代碼來(lái)迭代這些文件。
$zip_file = 'invoices.zip'; $zip = new \ZipArchive(); $zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); $path = storage_path('invoices'); $files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path)); foreach ($files as $name => $file) { // 我們要跳過(guò)所有子目錄 if (!$file->isDir()) { $filePath = $file->getRealPath(); // 用 substr/strlen 獲取文件擴(kuò)展名 $relativePath = 'invoices/' . substr($filePath, strlen($path) + 1); $zip->addFile($filePath, $relativePath); } } $zip->close(); return response()->download($zip_file);
到這里基本就算完成了。你看,你不需要任何 Laravel 的擴(kuò)展包來(lái)實(shí)現(xiàn)這個(gè)壓縮方式。
感謝各位的閱讀,以上就是“如何用Laravel創(chuàng)建Zip文件并實(shí)現(xiàn)下載”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)如何用Laravel創(chuàng)建Zip文件并實(shí)現(xiàn)下載這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。