Rumah > rangka kerja php > Laravel > teks badan

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

藏色散人
Lepaskan: 2021-10-14 16:10:46
ke hadapan
1722 orang telah melayarinya

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);
Salin selepas log masuk
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);
Salin selepas log masuk
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!

Label berkaitan:
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!