Rumah >pembangunan bahagian belakang >tutorial php >Cara zip dan unzip fail dalam php

Cara zip dan unzip fail dalam php

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-03-04 10:39:10631semak imbas

How to Zip and Unzip Files in PHP

pemampatan fail pemindahan rangkaian mempunyai kelebihan yang signifikan. Pengguna boleh dikurangkan pada bila -bila masa selepas memuat turun. Singkatnya, mampatan dapat memudahkan pemindahan rangkaian fail untuk anda dan pelawat anda.

fail memampatkan secara manual boleh menjadi rumit, tetapi bernasib baik, PHP menawarkan banyak sambungan yang mengkhususkan diri dalam mengendalikan mampatan dan penyahmampatan fail. Anda boleh menggunakan fungsi dalam sambungan ini untuk memampatkan fail PHP secara automatik.

Tutorial ini akan membimbing anda bagaimana untuk memampatkan fail ke dalam arkib zip dalam PHP dan menguraikan fail dari arkib ZIP. Anda juga akan belajar bagaimana untuk memadam atau menamakan semula fail dalam arkib anda tanpa mengakiskan semula terlebih dahulu.

php pemampatan fail tunggal
  • pelbagai mampatan fail dalam direktori
  • mengubah atau menimpa arkib
  • > PHP
  • ziparchive :: rdonly
  • > Logo PHP (tersedia dalam Php 7.4.3 dan kemudian) membolehkan anda membuka arkib dalam mod baca sahaja.
  • Anda boleh merujuk dokumentasi untuk kaedah ini untuk memahami kod ralat yang berbeza yang dikembalikan apabila membuka fail gagal. Jika fail zip berjaya dibuka atau dibuat, kaedah ini mengembalikan ziparchive :: overwrite bendera Jika kandungan arkib yang sedia ada tidak penting. Jika arkib dengan nama khusus itu tidak wujud, ia tidak membuat arkib baru.
Anda boleh menggunakan ziparchive :: buat gabungan untuk menulis ganti arkib yang sedia ada dan buat arkib baru jika tidak ada arkib dengan nama khusus itu. Contohnya adalah seperti berikut:

Gunakan ziparchive :: create dan buka () kaedah untuk membuka arkib baru atau sedia ada untuk membaca dan menulis. Dalam bahagian ini, kita akan memahami perbezaan yang mungkin timbul disebabkan oleh kombinasi bendera yang berlainan yang diluluskan kepada $ pilihan, lulus ke ziparchive :: create akan membuat arkib baru atau mengubah suai arkib yang ada jika sudah ada. Anda tidak akan menerima sebarang amaran mengenai mengubahsuai arkib sedia ada. Ini bermakna jika anda melaksanakan kod dalam bahagian ini untuk membuat arkib dan kemudian laksanakannya semula selepas menggantikan pilihan asal dengan pilihan baru, anda akan mendapat beberapa hasil yang tidak dijangka. Arkib kemudiannya akan mengandungi Direktori Direktori

Ia boleh menjadi sedikit mengelirukan pada mulanya dan mungkin membuat anda tertanya -tanya mengapa anda ingin menimpa segala -galanya dalam arkib (jika sudah ada), tetapi jika anda tidak mahu kod itu membuang kesilapan jika ia tidak wujud, maka gunakan ziparchive :: create | ziparchive :: overwrite.

Juga ingat bahawa sejak Libzip 1.6.0, fail kosong tidak lagi dianggap arkib yang sah.

$zip->open('my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE);
Ekstrak Kandungan dari Arkib

Kelas mempunyai kaedah yang dipanggil

untuk mengekstrak kandungan yang diarkibkan. Anda boleh menggunakannya untuk mengekstrak segala -galanya dalam arkib atau hanya mengeluarkan beberapa fail tertentu. Parameter

boleh digunakan untuk menentukan nama fail tunggal untuk diekstrak, atau untuk lulus array fail.

Satu perkara yang perlu diingat ialah anda perlu menentukan laluan yang betul ke fail dalam arkib untuk mengekstraknya. Sebagai contoh, kami mengarkibkan fail fon bernama alegreyasans-light.ttf di bahagian sebelumnya. Fail ini disimpan dalam direktori bernama font_files dalam arkib. Ini bermakna bahawa jalan yang anda perlukan untuk menentukan dalam parameter $entries adalah font_files/alegreyasans-light.ttf , bukan hanya alegreyasans-light.ttf .

Direktori dan struktur fail akan dikekalkan semasa proses pengekstrakan, dan fail akan diekstrak ke direktori masing -masing.

$zip->open('my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE);

Jika parameter kedua ditinggalkan, kaedah akan mengekstrak semua fail dalam arkib.

lebih banyak kawalan arkib

Kelas

ZipArchive juga menyediakan banyak kaedah dan sifat lain untuk membantu anda mendapatkan lebih banyak maklumat mengenai arkib sebelum mengekstrak segala -galanya.

anda boleh menggunakan kaedah count() untuk mengira bilangan fail dalam arkib. Pilihan lain ialah menggunakan atribut numFiles. Mereka boleh digunakan untuk melangkah ke atas semua fail dalam arkib, hanya mengekstrak fail yang diperlukan, atau anda boleh melakukan tindakan lain pada mereka, seperti mengeluarkannya dari arkib.

Dalam contoh berikut, kami memadam semua fail dalam arkib yang mengandungi perkataan italic . Kod serupa boleh digunakan untuk memadam semua fail yang tidak mengandungi kata -kata tertentu. Anda juga boleh melangkah ke atas fail ini dan menggantikan kata -kata tertentu dengan kandungan lain.

<?php

$zip = new ZipArchive();
$zip->open('compressed/user_archive.zip', ZipArchive::CREATE);
$zip->extractTo('uncompressed/', 'font_files/AlegreyaSans-Light.ttf');
$zip->close();

?>

Dalam kod di atas, kami menggunakan deleteName() untuk memadam satu fail. Walau bagaimanapun, anda juga boleh menggunakannya untuk memadam keseluruhan direktori.

Fungsi serupa renameName($oldname, $newname) boleh digunakan untuk menukar nama mana -mana fail dalam arkib. Jika fail bernama $newname sudah ada, anda akan menerima mesej ralat.

Ringkasan

kami memperkenalkan banyak kaedah yang sangat berguna dari kelas ZipArchive yang akan membuat mampatan automatik dan penyahmampatan fail dalam php angin. Anda kini boleh memampatkan satu fail atau sekumpulan fail sekaligus berdasarkan piawaian anda sendiri. Sekali lagi, anda harus dapat mengekstrak sebarang fail tertentu dari arkib tanpa menjejaskan kandungan lain.

Dengan bantuan count() dan numFiles, anda boleh mempunyai kawalan yang lebih baik ke atas fail individu, dan menamakan semula atau memadamkannya akan menjadi sangat mudah. Anda harus membaca dokumentasi sekurang -kurangnya sekali untuk mengetahui lebih lanjut mengenai fungsi tersebut.

Atas ialah kandungan terperinci Cara zip dan unzip fail dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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