Bagaimana untuk menghantar dan menerima pakej termampat dalam jumlah melalui PHP ZipArchive?
Dalam pembangunan web, kadangkala perlu membungkus fail besar atau berbilang fail ke dalam pakej termampat untuk penghantaran. Walau bagaimanapun, disebabkan oleh had penghantaran rangkaian, kadangkala keseluruhan pakej termampat tidak boleh dihantar atau diterima pada satu masa. Untuk menyelesaikan masalah ini, kami boleh menggunakan kelas ZipArchive PHP untuk menghantar dan menerima pakej termampat dalam jumlah.
Pertama, kita perlu mencipta contoh pakej termampat dan menetapkan beberapa parameter asas. Kemudian, kita boleh menggunakan kaedah addFile() untuk menambah fail yang perlu dimampatkan pada pakej dimampatkan. Selepas menambah semua fail, gunakan kaedah split() untuk membahagikan arkib kepada berbilang jilid. Kemudian, kita boleh menggunakan kaedah renameIndex() untuk menukar nama setiap jilid kepada peraturan penamaan yang ditentukan. Akhir sekali, gunakan kaedah close() untuk menutup pakej termampat.
Berikut ialah contoh kod:
$zip = new ZipArchive(); $zip_name = 'files.zip'; $chunk_size = 1024 * 1024; // 分卷大小,默认为1MB $split_index = 1; // 第一个分卷的索引 if ($zip->open($zip_name, ZipArchive::CREATE) === TRUE) { $files = array('file1.jpg', 'file2.png', 'file3.txt'); foreach ($files as $file) { $zip->addFile($file); } $zip->split($chunk_size); for ($i = 0; $i < $zip->numFiles; $i++) { $zip->renameIndex($i, $split_index . '_' . $zip->getNameIndex($i)); $split_index++; } $zip->close(); }
Kod di atas mula-mula mencipta objek ZipArchive, menentukan nama fail pakej termampat sebagai 'files.zip', dan saiz volum ialah 1MB. Kemudian, tiga fail telah ditambahkan pada pakej termampat. Seterusnya, gunakan kaedah split() untuk membahagikan pakej termampat kepada berbilang jilid dan gunakan kaedah renameIndex() untuk menukar nama setiap jilid kepada peraturan penamaan yang ditentukan. Akhir sekali, tutup pakej termampat melalui kaedah close(). . Kita boleh menggunakan kaedah merge() yang disediakan oleh kelas ZipArchive untuk mencapai ini. Kemudian, gunakan kaedah extractTo() untuk mengekstrak fail dalam pakej termampat ke direktori yang ditentukan.
$zip = new ZipArchive(); $zip_name = 'files.zip'; $chunk_size = 1024 * 1024; // 分卷大小,默认为1MB $output_dir = 'output/'; // 获取所有分卷文件 $files = glob('*.zip'); if ($zip->open($zip_name, ZipArchive::CREATE) === TRUE) { foreach ($files as $file) { $zip->merge($file, $zip->numFiles); } $zip->extractTo($output_dir); $zip->close(); // 删除所有分卷文件 foreach ($files as $file) { unlink($file); } }
Melalui contoh kod di atas, kita boleh menggunakan kelas PHP ZipArchive untuk menghantar dan menerima pakej termampat dalam jumlah. Ini membolehkan kawalan dan pemprosesan yang lebih baik bagi pemindahan fail besar, meningkatkan kecekapan dan kestabilan pemindahan.
Atas ialah kandungan terperinci Bagaimana untuk menghantar dan menerima pakej termampat dalam jumlah melalui PHP ZipArchive?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!