Rumah >pembangunan bahagian belakang >tutorial php >Cara zip dan unzip fail dalam 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.
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 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. Kelas mempunyai kaedah yang dipanggil 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 Direktori dan struktur fail akan dikekalkan semasa proses pengekstrakan, dan fail akan diekstrak ke direktori masing -masing. Jika parameter kedua ditinggalkan, kaedah akan mengekstrak semua fail dalam arkib. anda boleh menggunakan kaedah 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. Dalam kod di atas, kami menggunakan Fungsi serupa kami memperkenalkan banyak kaedah yang sangat berguna dari kelas Dengan bantuan $zip->open('my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE);
Ekstrak Kandungan dari Arkib $entries
adalah font_files/alegreyasans-light.ttf , bukan hanya alegreyasans-light.ttf . $zip->open('my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE);
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. 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. <?php
$zip = new ZipArchive();
$zip->open('compressed/user_archive.zip', ZipArchive::CREATE);
$zip->extractTo('uncompressed/', 'font_files/AlegreyaSans-Light.ttf');
$zip->close();
?>
deleteName()
untuk memadam satu fail. Walau bagaimanapun, anda juga boleh menggunakannya untuk memadam keseluruhan direktori. 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
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. 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!