Rumah >rangka kerja php >Laravel >Bagaimana untuk membuat fail Zip dan memuat turunnya dalam Laravel? (Contoh kod dilampirkan)

Bagaimana untuk membuat fail Zip dan memuat turunnya dalam Laravel? (Contoh kod dilampirkan)

藏色散人
藏色散人ke hadapan
2021-10-14 16:10:462055semak imbas

Lajur tutorial Laravel berikut akan memperkenalkan anda untuk mencipta fail mampat Zip dalam Laravel dan saya harap ia dapat membantu semua orang.

Buat fail termampat Zip dalam Laravel dan sediakannya untuk dimuat turun

Jika anda memerlukan pengguna anda untuk menyokong muat turun berbilang fail, cara terbaik ialah mencipta pakej fail zip dan tersedia untuk dimuat turun. Lihatlah pelaksanaan dalam Laravel.

Sebenarnya, ini bukan tentang Laravel, tetapi lebih berkaitan dengan PHP Kami akan menggunakan kelas ZipArchive yang telah wujud sejak PHP 5.2 Jika anda ingin menggunakannya, anda perlu memastikan php.iniext-zip dalam 🎜> didayakan.

Tugas 1: Simpan fail invois pengguna ke storage/invois/aaa001.pdf

Berikut ialah paparan kod:

$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);
Contohnya mudah kan?

Tugas 2: Mampatkan semua fail ke direktori storan/invois

Tiada perubahan diperlukan dalam Laravel We hanya perlu menambah beberapa kod PHP mudah untuk mengulangi fail ini.

$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);
Ini pada asasnya lengkap. Anda lihat, anda tidak memerlukan sebarang sambungan Laravel untuk melaksanakan kaedah pemampatan ini.

Artikel dicetak semula daripada: https://learnku.com/laravel/t/26087

Atas ialah kandungan terperinci Bagaimana untuk membuat fail Zip dan memuat turunnya dalam Laravel? (Contoh kod dilampirkan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:segmentfault.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam