Heim  >  Artikel  >  PHP-Framework  >  Wie erstelle ich eine Zip-Datei und lade sie in Laravel herunter? (Beigefügtes Codebeispiel)

Wie erstelle ich eine Zip-Datei und lade sie in Laravel herunter? (Beigefügtes Codebeispiel)

藏色散人
藏色散人nach vorne
2021-10-14 16:10:461814Durchsuche

Die folgende Tutorial-Kolumne von Laravel führt Sie in die Erstellung von Zip-komprimierten Dateien in Laravel ein und bietet Download-Methoden für alle.

Erstellen Sie komprimierte Zip-Dateien in Laravel und stellen Sie sie zum Download bereit

Wenn Ihre Benutzer mehrere Dateidownloads unterstützen sollen, ist es am besten, ein komprimiertes Paket zu erstellen und es zum Download bereitzustellen. Schauen Sie sich die Implementierung in Laravel an.

Tatsächlich geht es hier nicht um Laravel, sondern eher um PHP. Wir werden die ZipArchive-Klasse verwenden, die es seit PHP 5.2 gibt. Wenn Sie sie verwenden möchten, müssen Sie sicherstellen, dass ext-zip ist php.ini Erweiterung aktiviert.

Aufgabe 1: Speichern Sie die Rechnungsdatei des Benutzers in storage/invoices/aaa001.pdf

Hier ist die Codeanzeige:

$zip_file = 'invoices.zip'; // 要下载的压缩包的名称

// 初始化 PHP 类
$zip = new \ZipArchive();
$zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);

$invoice_file = 'invoices/aaa001.pdf';

// 添加文件:第二个参数是待压缩文件在压缩包中的路径
// 所以,它将在 ZIP 中创建另一个名为 "storage/" 的路径,并把文件放入目录。
$zip->addFile(storage_path($invoice_file), $invoice_file);
$zip->close();

// 我们将会在文件下载后立刻把文件返回原样
return response()->download($zip_file);

Das Beispiel ist einfach, oder?

Aufgabe 2: Komprimieren alle Dateien im Verzeichnis storage/invoices

Auf der Laravel-Seite sind keine Änderungen erforderlich, wir müssen lediglich einfachen PHP-Code hinzufügen, um die Dateien zu durchlaufen.

$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)
{
    // 我们要跳过所有子目录
    if (!$file->isDir()) {
        $filePath     = $file->getRealPath();

        // 用 substr/strlen 获取文件扩展名
        $relativePath = 'invoices/' . substr($filePath, strlen($path) + 1);

        $zip->addFile($filePath, $relativePath);
    }
}
$zip->close();
return response()->download($zip_file);

Das ist im Grunde abgeschlossen. Sie sehen, Sie benötigen keine Laravel-Erweiterungen, um diese Komprimierungsmethode zu implementieren.

Artikel nachgedruckt von: https://learnku.com/laravel/t/26087

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Zip-Datei und lade sie in Laravel herunter? (Beigefügtes Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen