Heim > PHP-Framework > Laravel > Erstellen Sie Zip-komprimierte Dateien in Laravel und stellen Sie herunterladbare Codebeispiele bereit

Erstellen Sie Zip-komprimierte Dateien in Laravel und stellen Sie herunterladbare Codebeispiele bereit

不言
Freigeben: 2019-04-02 11:36:05
nach vorne
3785 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Erstellung komprimierter Zip-Dateien in Laravel und der Bereitstellung von Codebeispielen zum Herunterladen. Ich hoffe, dass er für Freunde in Not nützlich ist Dir. Hilft.

Wenn Ihre Benutzer das Herunterladen mehrerer Dateien 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.

Eigentlich 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 php.iniext-zip in 🎜> ist aktiviert.

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

Das Folgende 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);
Nach dem Login kopieren
Das Beispiel ist einfach, oder?

Aufgabe 2: Komprimieren Sie alle Dateien im Verzeichnis „storage/invoices“

Auf der Laravel-Seite sind keine Änderungen erforderlich. Wir müssen lediglich einfachen PHP-Code hinzufügen, um diese 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);
Nach dem Login kopieren
Das ist im Grunde genommen erledigt. Sie sehen, Sie benötigen keine Laravel-Erweiterungen, um diese Komprimierungsmethode zu implementieren.

[Verwandte Empfehlungen:

PHP-Video-Tutorial]


Das obige ist der detaillierte Inhalt vonErstellen Sie Zip-komprimierte Dateien in Laravel und stellen Sie herunterladbare Codebeispiele bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage