[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-cats-ngidenet":3,"blog-detail-ngidenet-bagaimana-cara-membuat-zip-file-dengan-php":20},{"items":4},[5,9,13,17],{"name":6,"slug":7,"count":8},"Digital Marketing","digital-marketing",41,{"name":10,"slug":11,"count":12},"Programming","programming",56,{"name":14,"slug":15,"count":16},"Tips","tips",75,{"name":18,"slug":19,"count":8},"Web Development","web-development",{"id":21,"slug":22,"title":23,"short_text":24,"excerpt":24,"cover":25,"cover_image":25,"cover_alt_text":25,"category":10,"tags":26,"published_at":27,"created_at":28,"full_text":29,"meta_title":25,"meta_description":30,"faqs":31,"images":32,"views_count":33},431,"bagaimana-cara-membuat-zip-file-dengan-php","Bagaimana cara membuat ZIP file dengan PHP?","Membuat file zip dengan PHP sebenarnya sangat mudah karena PHP sendiri sudah memiliki class yang bernama ZipArchive. Nah pada tutorial kali ini kita akan membahas beberapa kemungkinan kasus dalam memb",null,[],"2020-09-20T16:00:00Z","2026-07-14T04:39:39.118586Z","\u003Cp>Membuat file zip dengan PHP sebenarnya sangat mudah karena PHP sendiri sudah memiliki class yang bernama ZipArchive. Nah pada tutorial kali ini kita akan membahas beberapa kemungkinan kasus dalam membuat file zip dalam projek kamu nanti.\u003C\u002Fp>\n\u003Ch3>1. Membuat file zip dari file\u003C\u002Fh3>\n\u003Cp>Kode dibawah ini adalah contoh membuat sebuah file dengan nama \u003Ccode>new.zip\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php \n$zip = new ZipArchive;\nif ($zip-&gt;open('new.zip', ZipArchive::CREATE) === TRUE) {\n     \u002F\u002F point 1     \n     $zip-&gt;addFile('file1.txt');     \n     $zip-&gt;addFile('file2.pdf');       \n     \u002F\u002F point 2     \n     $zip-&gt;addFile('file3.txt', 'oldfile.txt');       \n     \u002F\u002F point 3     \n     $zip-&gt;addFromString('new.txt', 'text to be added to the new.txt file');       \n     \u002F\u002F point 4     \n     $zip-&gt;close();  \n }\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Penjelasannya:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>line 2 kita membuat sebuah instant baru dari class \u003Ccode>ZipAchive\u003C\u002Fcode> dengan nama \u003Ccode>$zip\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>line 3 kita membuat sebuah zip file dengan nama \u003Ccode>new.zip\u003C\u002Fcode> dan jika berhasil maka kita bisa lanjut untuk mengisinya dengan file yang kita inginkan.\u003C\u002Fli>\n\u003Cli>point 1: kita memasukkan \u003Ccode>file1.txt\u003C\u002Fcode> ke dalam file zip. Artinya file \u003Ccode>file1.txt\u003C\u002Fcode> sudah ada di dalam directory\u003C\u002Fli>\n\u003Cli>point 2: kita akan memasukkan file dengan nama oldfile.txt yang ada di folder tapi kita akan merubahnya menjadi \u003Ccode>file2.txt\u003C\u002Fcode> di dalam zip.\u003C\u002Fli>\n\u003Cli>point 3: fungsi \u003Ccode>addFromString\u003C\u002Fcode> berfungsi untuk membuat sebuah file dari string. Jadi file new.txt tidak ada di dalam folder kita tapi kita akan buat dari string.\u003C\u002Fli>\n\u003Cli>poin 4: fungsi \u003Ccode>close()\u003C\u002Fcode> untuk menutup dan menyimpan perubahan yang kita buat di file new.zip\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cem>Note:\u003C\u002Fem> hati-hati dengan path file yang mau kamu tambahkan. Dalam contoh di atas, semua file berada di dalam folder.\u003C\u002Fp>\n\u003Ch3>2. Overwrite file zip yang sudah ada\u003C\u002Fh3>\n\u003Cp>Jika kita ingin mengoverwrite file zip yang sudah ada seperti file new.zip maka kita hanya perlu manambahkan variable \u003Ccode>ZipArchive::OVERWRITE\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php \n$zip = new ZipArchive; \nif ($zip-&gt;open('new.zip', ZipArchive::OVERWRITE) === TRUE) {     \n\t\u002F\u002Fpoin 1\n\t$zip-&gt;addFile('file1.txt','newfile.txt');\n        \u002F\u002Fpoint 2     \n\t$zip-&gt;addFile('file2.pdf');\n        \u002F\u002F All files are added, so close the zip file.     \n\t$zip-&gt;close(); \n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Penjelasannya:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Point 1: kita akan merewrite file1.txt dengan newfile.txt\u003C\u002Fli>\n\u003Cli>point 2: file2.pdf yang sudah ada di zip sebelumnya akan ditumpuk oleh file2.pdf yang baru\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>3. Membuat file zip tapi memodifikasi isi folder di dalam zip tersebut.\u003C\u002Fh4>\n\u003Cp>Selanjutnya kita akan membuat folder-folder dalam file zip yang akan kita buat.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php \n$zip = new ZipArchive; \nif ($zip-&gt;open('new.zip', ZipArchive::CREATE) === TRUE) {\n\t\u002F\u002Fpoin 1     \n\t$zip-&gt;addFile('text.txt', 'demo_folder\u002Ftest.txt');     \n\t$zip-&gt;addFile('test.pdf', 'demo_folder\u002Ftest.pdf');       \n\t\u002F\u002Fpoin 2     \n\t$zip-&gt;addFile('random.txt', 'demo_folder\u002Fnewfile.txt');\n\t\u002F\u002Fpoin 3     \n\t$zip-&gt;addFromString('demo_folder\u002Fnew.txt', 'text to be added to the new.txt file');      \n        \u002F\u002F All files are added, so close the zip file.    \n\t$zip-&gt;close();\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Penjelasannya:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>poin 1: kita akan membuat file text.txt tapi mengambil file yang ada di folder \u003Ccode>demo_folder\u002Ftext.txt\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>poin 2: seperti dari poin 1, file newfile.txt yang ada di demo_folder akan kita simpan tanpa folder dan namanya dirubah menjadi random.txt\u003C\u002Fli>\n\u003Cli>poin 3: kita akan membuat sebuah file di dalam folder demo_folder di dalam zip\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>4. Membuat zip dari sebuah folder\u003C\u002Fh4>\n\u003Cp>Untuk membuat file dari sebuah folder kita perlu mengambil semua file yang ada di dalam folder tersebut dengan bantuan fungsi opendir, lalu memasukkan satu-persatu filenya ke dalam file zip.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php \n$zip = new ZipArchive;\nif ($zip-&gt;open('new.zip', ZipArchive::OVERWRITE) === TRUE) {\n  \t\u002F\u002Fpoint 1\n\tif ($handle = opendir('demo_folder'))     \n  \t              \u002F\u002F point 2\n\t\twhile (false !== ($entry = readdir($handle))) \n\t\t{\n  \t                                \t\u002F\u002Fpoint 3             \n\t\t\tif ($entry != \".\" &amp;&amp; $entry != \"..\" &amp;&amp; !is_dir('demo_folder\u002F' . $entry))\n\t\t\t{\n\t\t\t\t\u002F\u002Fpoint 4  \n\t\t\t\t$zip-&gt;addFile('demo_folder\u002F' . $entry);             \n\t\t\t} \n\t\t}\n\t\tclosedir($handle);\n \n \n\t}\n\t$zip-&gt;close(); \n} \n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Penjelasan:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>poin 1: kita memakai fungsi opendir untuk membuka file demo_folder\u003C\u002Fli>\n\u003Cli>poin 2: kita looping untuk mendapatkan semua filename yang ada di dalam folder tersebut\u003C\u002Fli>\n\u003Cli>poin 3: skip untuk ., .., dan folder di dalam demo_folder\u003C\u002Fli>\n\u003Cli>poin 4: menambahkan file ke dalam zip\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cem>Note: hati-hati jika masih ada folder di dalam folder demo_folder, karena proses zip akan error. jadi kamu bisa melakukan checking lagi jika ada folder maka lakukan looping lagi.\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch4>5. Membuat zip dari gabungan beberapa file dan folder sekaligus\u003C\u002Fh4>\n\u003Cp>Dari contoh di atas, kita akan coba gabungkan jadi kita bisa membuat sebuah zip file yang berisi file dari beberapa folder dan file sekaligus.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php\n$zip = new ZipArchive;\nif ($zip-&gt;open('test_files_dirs.zip', ZipArchive::OVERWRITE) === TRUE) \n{\n\t\u002F\u002F Add directory1     \n\tif ($handle = opendir('demo_folder\u002Fdirectory1\u002F'))\n\t{\n\t\twhile (false !== ($entry = readdir($handle)))\n\t\t{             \n\t\t\tif ($entry != \".\" &amp;&amp; $entry != \"..\")\n\t\t\t{                 \n\t\t\t\t$zip-&gt;addFile('demo_folder\u002Fdirectory1\u002F' . $entry);\n \n \n\t\t\t}\n\t\t}\n\t\tclosedir($handle);\n\t}\n\t\u002F\u002F Add directory2\n\tif ($handle = opendir('demo_folder\u002Fdirectory2\u002F'))     \n\t{\n\t\twhile (false !== ($entry = readdir($handle)))\n\t\t{\n\t\t\tif ($entry != \".\" &amp;&amp; $entry != \"..\")            \n\t\t\t{\n\t\t\t\t$zip-&gt;addFile('demo_folder\u002Fdirectory2\u002F' . $entry);\n\t\t\t}        \n \n \n\t\t}\n\t\tclosedir($handle);  \n\t}    \n\t\u002F\u002F Add directory3     \n\tif ($handle = opendir('demo_folder\u002Fdirectory3\u002F'))     \n\t{\n\t\twhile (false !== ($entry = readdir($handle)))  \n\t\t{ \n\t\t\tif ($entry != \".\" &amp;&amp; $entry != \"..\")  \n\t\t\t{\n\t\t\t\t$zip-&gt;addFile('demo_folder\u002Fdirectory3\u002F' . $entry);  \n\t\t\t}\n\t\t}\n\t\tclosedir($handle);\n\t}\n            \u002F\u002F Add more files\n\t$zip-&gt;addFile('demo_folder\u002Findex.txt');      \n\t$zip-&gt;close();  \n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>Selanjutnya?\u003C\u002Fh2>\n\u003Cp>Sepertinya akan lebih gampang jika kita memiliki sebuah fungsi yang bisa mempermudah proses pembuatan zip. Jadi kita bisa memasukkan nama folder atau file kemudian nama zip yang di inginkan kemudian file zip kita sudah selesai dibuat. Jadi contohnya seperti di bawah ini:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php \n\u002F* creates a compressed zip file *\u002F \nfunction create_zip($files = array(),$destination = '',$overwrite = false) \n{\n \t\u002F\u002Fif the zip file already exists and overwrite is false, return false \t\n\tif(file_exists($destination) &amp;&amp; !$overwrite) { return false; } \t\n \t\u002F\u002Fvars \t$valid_files = array(); \t \t\n \t\u002F\u002Fif files were passed in... \t\n\tif(is_array($files)) {\n \t \t\u002F\u002Fcycle through each file \t\t\n\t\tforeach($files as $file) \n\t\t{\n\t\t\t\u002F\u002Fmake sure the file exists\n\t\t\tif(file_exists($file)) { \n\t\t\t\t$valid_files[] = $file; \n\t\t\t} \t\n\t\t} \t\n\t}elseif(is_dir($files)){ \t\t\n\t\tif ($handle = opendir($files)) \t    \n\t\t{\n\t\t\twhile (false !== ($entry = readdir($handle))) \t        \n\t\t\t{\n\t\t\t\tif ($entry != \".\" &amp;&amp; $entry != \"..\" &amp;&amp; !is_dir($files.'\u002F' . $entry)) \t\n\t\t\t\t{ \t            \t\n\t\t\t\t\t$valid_files[] = $files.'\u002F' . $entry;\n\t\t\t\t}\n\t\t\t}\n\t\t\tclosedir($handle); \t    \n\t\t}\n\t} \n\t\u002F\u002Fif we have good files...\n\tif(count($valid_files)) { \n\t\t\u002F\u002Fcreate the archive\n\t\t$zip = new ZipArchive(); \n\t\tif($zip-&gt;open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) { \n\t\t\treturn false; \t\t\n\t\t} \n\t\t\u002F\u002Fadd the files\n\t\tforeach($valid_files as $file) { \t\t\n\t\t\t$zip-&gt;addFile($file,$file); \t\t\n\t\t} \t\t \t\t\n\t\t\u002F\u002Fclose the zip -- done!\n\t\t$zip-&gt;close();\n\t\t\u002F\u002Fcheck to make sure the file exists\n\t\treturn file_exists($destination);\n\t}\n\telse\n\t{\n\t\treturn false;\n\t}\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Kita punya sebuah fungsi dengan nama create_zip yang memiliki parameter berupa:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Nama file atau folder atau bisa memasukkan list file berupa array\u003C\u002Fli>\n\u003Cli>Destinasi atau nama zip file yang akan kita buat\u003C\u002Fli>\n\u003Cli>Terakhir adalah overwrite status, jika trus maka zip file akan di overwrite.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Cara memakai fungsi di atas akan kita jelaskan di bawah ini:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php \n$files_to_zip = array(\n\t'new.txt',\n\t'new2.txt',\n\t'new3.txt',\n\t);\n\u002F\u002Fif true, good; if false, zip creation failed \n$result = create_zip($files_to_zip,'my-archive.zip');  \n \n$folder_name = 'testing';\n\u002F\u002Fif true, good; if false, zip creation failed\n$result = create_zip($folder_name,'my-archive2.zip',TRUE);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Penjelasan:\u003C\u002Fp>\n\u003Cp>Contoh pertama kita membuat zip file dari list file yang ada di dalam array \u003Cstrong>$files_to_zip\u003C\u002Fstrong>, kemudian di contoh kedua kita membuat zip dari sebuah folder yang bernama testing dengan overwrite status trus. Jadi jika sebelumnya sudah ada file my-archive2.zip maka akan di overwrite.\u003C\u002Fp>\n\u003Cp>Jadi itu sedikit banyak tentang bagaimana cara membuat zip dengan PHP. Kamu mencobanya sekarang dan memodif semua contoh di atas sesuai dengan kebutuhan kamu.\u003C\u002Fp>","Membuat file zip dengan PHP sebenarnya sangat mudah karena PHP sendiri sudah memiliki class yang bernama ZipArchive. Nah pada tutorial kali ini kita akan membah",[],[],0]