PHP में ZIP-आर्काइव के साथ कार्य का परिचय
डेटा आर्काइवेशन वेब डेवलपमेंट के बुनियादी कार्यों में से एक है। चाहे वह डेटाबेस का बैकअप लेना हो, उपयोगकर्ता द्वारा अपलोड की गई फ़ाइलों को पैक करना हो, या बड़ी मात्रा में जानकारी का निर्यात करना हो — ZIP प्रारूप सबसे लोकप्रिय और सार्वभौमिक समाधान बना हुआ है। PHP एक अंतर्निहित क्लास ZipArchive प्रदान करता है, जो आपको अतिरिक्त एक्सटेंशन स्थापित किए बिना ZIP-आर्काइव के साथ सभी बुनियादी संचालन करने की अनुमति देता है।
इस लेख में, हम विस्तार से समझेंगे कि PHP में ZipArchive का उपयोग कैसे करें: एक साधारण आर्काइव बनाने से लेकर नेस्टेड फ़ोल्डरों को संसाधित करने और पासवर्ड सुरक्षा तक। सभी कोड उदाहरण आपके सर्वर पर उपयोग के लिए तैयार हैं।
कार्य की तैयारी: Zip एक्सटेंशन की जाँच
शुरू करने से पहले, सुनिश्चित करें कि आपके सर्वर पर zip एक्सटेंशन सक्षम है। यह आमतौर पर PHP के आधुनिक संस्करणों (7.4+, 8.x) में डिफ़ॉल्ट रूप से स्थापित होता है। इसे phpinfo() फ़ंक्शन या एक सरल स्क्रिप्ट से जाँचा जा सकता है:
<?phpif (extension_loaded('zip')) { echo 'Zip एक्सटेंशन उपलब्ध है';} else { echo 'Zip एक्सटेंशन नहीं मिला। कृपया इसे php.ini के माध्यम से स्थापित करें';}?>PHP में ZIP-आर्काइव बनाना
चरण 1. ZipArchive ऑब्जेक्ट को आरंभ करना
कार्य शुरू करने के लिए, ZipArchive क्लास का एक इंस्टेंस बनाएं और open() विधि का उपयोग करके एक नया आर्काइव खोलें। दूसरा पैरामीटर — फ़्लैग ZipArchive::CREATE — इंगित करता है कि आर्काइव नया बनाया जाएगा (या यदि पहले से मौजूद है तो ओवरराइट किया जाएगा)।
<?php$zip = new ZipArchive();$zipName = 'example.zip';
if ($zip->open($zipName, ZipArchive::CREATE) !== TRUE) { exit("आर्काइव $zipName बनाने में विफल");}?>चरण 2. आर्काइव में फ़ाइलें जोड़ना
विधि addFile() फ़ाइल सिस्टम से मौजूदा फ़ाइल जोड़ती है। पहला तर्क — फ़ाइल का पथ, दूसरा (वैकल्पिक) — आर्काइव के अंदर फ़ाइल का नाम (यदि आप इसका नाम बदलना चाहते हैं)।
<?php// एक फ़ाइल जोड़ें$zip->addFile('document.pdf', 'my_document.pdf');
// कई फ़ाइलें जोड़ें$files = ['photo1.jpg', 'photo2.jpg', 'photo3.jpg'];foreach ($files as $file) { $zip->addFile($file);}?>चरण 3. संरचना को बनाए रखते हुए पूरा फ़ोल्डर जोड़ना
यदि आप सभी नेस्टेड फ़ाइलों के साथ एक निर्देशिका को पैक करना चाहते हैं, तो रिकर्सिव ट्रैवर्सल का उपयोग करें। यहाँ एक तैयार फ़ंक्शन है:
<?phpfunction addFolderToZip($zip, $folder, $parentFolder = '') { $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($folder), RecursiveIteratorIterator::LEAVES_ONLY );
foreach ($files as $file) { if (!$file->isDir()) { $filePath = $file->getRealPath(); $relativePath = $parentFolder . $file->getFilename(); $zip->addFile($filePath, $relativePath); } }}
// उपयोग:$zip->addEmptyDir('my_folder'); // आर्काइव में फ़ोल्डर बनाएँaddFolderToZip($zip, '/path/to/source_folder', 'my_folder/');?>चरण 4. आर्काइव को बंद करना
सभी फ़ाइलें जोड़ने के बाद, आर्काइव को बंद करना सुनिश्चित करें — अन्यथा डेटा लिखा नहीं जाएगा।
<?php$zip->close();echo "आर्काइव $zipName सफलतापूर्वक बनाया गया!";?>PHP में ZIP-आर्काइव को अनज़िप करना
फ़ाइलें निकालने के लिए विधि extractTo() का उपयोग किया जाता है। वह लक्ष्य फ़ोल्डर निर्दिष्ट करें जहाँ फ़ाइलें अनज़िप की जाएंगी।
<?php$zip = new ZipArchive();if ($zip->open('example.zip') === TRUE) { $zip->extractTo('/path/to/extract_folder/'); $zip->close(); echo 'आर्काइव सफलतापूर्वक अनज़िप हो गया';} else { echo 'आर्काइव खोलने में त्रुटि';}?>ZipArchive की उन्नत क्षमताएँ
स्ट्रिंग को फ़ाइल के रूप में जोड़ना
विधि addFromString() आपको सीधे स्ट्रिंग से फ़ाइल बनाने की अनुमति देती है