溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何用Laravel創(chuàng)建Zip文件并實(shí)現(xiàn)下載

發(fā)布時(shí)間:2021-10-15 10:52:12 來(lái)源:億速云 閱讀:113 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“如何用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)啟。

任務(wù) 1: 存儲(chǔ)用戶(hù)的發(fā)票文件到 storage/invoices/aaa001.pdf

下面是代碼展示:

$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ì)嗎?

任務(wù) 2: 壓縮 全部 文件到 storage/invoices 目錄中

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)注!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI