PHP में ZIP-आर्काइव के साथ काम करने का परिचय
ZIP-आर्काइव बनाना और प्रोसेस करना वेब डेवलपमेंट में एक सामान्य कार्य है। PHP में यह कार्य अंतर्निहित Zip एक्सटेंशन की मदद से हल किया जाता है, जो एक शक्तिशाली और सुविधाजनक क्लास ZipArchive प्रदान करता है। इसकी सहायता से आप नए आर्काइव बना सकते हैं, मौजूदा आर्काइव को अनज़िप कर सकते हैं, फ़ाइलें जोड़ या हटा सकते हैं, और मेटाडेटा के साथ काम कर सकते हैं।
इस लेख में हम PHP में ZIP-आर्काइव के साथ सभी बुनियादी संचालनों पर विस्तार से चर्चा करेंगे: सरल निर्माण से लेकर त्रुटि प्रबंधन और पासवर्ड के साथ काम करने तक। सभी उदाहरण आपके प्रोजेक्ट में उपयोग के लिए तैयार हैं।
कार्य की तैयारी: Zip एक्सटेंशन की उपलब्धता की जाँच
शुरू करने से पहले, सुनिश्चित करें कि zip एक्सटेंशन आपके सर्वर पर स्थापित और सक्षम है। इसे phpinfo() फ़ंक्शन या एक सरल स्क्रिप्ट से जाँचा जा सकता है:
<?phpif (extension_loaded('zip')) { echo "Zip एक्सटेंशन उपलब्ध है";} else { echo "Zip एक्सटेंशन नहीं मिला";}?>यदि एक्सटेंशन अनुपस्थित है, तो इसे अपने OS के पैकेज मैनेजर के माध्यम से स्थापित करें (उदाहरण के लिए, Ubuntu के लिए apt install php-zip) या php.ini फ़ाइल में सक्षम करें।
नया ZIP-आर्काइव बनाना
आर्काइव बनाने का सबसे सरल तरीका है कि एक नई फ़ाइल को राइट मोड में खोलें और उसमें फ़ाइलें जोड़ें। आइए एक बुनियादी उदाहरण देखें:
<?php$zip = new ZipArchive();$filename = 'example.zip';
// नया आर्काइव बनाएँ (ZIPARCHIVE::CREATE)if ($zip->open($filename, ZipArchive::CREATE) === TRUE) { // स्थानीय फ़ाइल सिस्टम से फ़ाइल जोड़ें $zip->addFile('/path/to/file1.txt', 'file1.txt'); // स्ट्रिंग को आर्काइव में नई फ़ाइल के रूप में जोड़ें $zip->addFromString('hello.txt', 'नमस्ते, दुनिया!'); // पूरा फ़ोल्डर जोड़ें (पुनरावर्ती रूप से) $zip->addGlob('/path/to/dir/*.*'); $zip->close(); echo "आर्काइव $filename सफलतापूर्वक बनाया गया";} else { echo "आर्काइव बनाने में त्रुटि";}?>ध्यान दें: addFile() का दूसरा पैरामीटर आर्काइव के अंदर फ़ाइल का नाम है। यदि यह निर्दिष्ट नहीं किया गया है, तो फ़ाइल मूल नाम से सहेजी जाएगी।
ZIP-आर्काइव को अनज़िप करना
आर्काइव से फ़ाइलें निकालना extractTo() विधि द्वारा किया जाता है। वह लक्ष्य फ़ोल्डर निर्दिष्ट करें जहाँ फ़ाइलें अनज़िप की जाएँगी:
<?php$zip = new ZipArchive();if ($zip->open('example.zip') === TRUE) { // सब कुछ 'unpacked' फ़ोल्डर में अनज़िप करें $zip->extractTo('/path/to/unpacked/'); $zip->close(); echo "आर्काइव अनज़िप हो गया";} else { echo "आर्काइव खोलने में त्रुटि";}?>यदि केवल विशिष्ट फ़ाइलें निकालनी हैं, तो उनकी सूची तीसरे तर्क के रूप में दें:
$zip->extractTo('/path/to/unpacked/', ['file1.txt', 'hello.txt']);आर्काइव की सामग्री देखना
कभी-कभी आर्काइव को अनज़िप किए बिना उसके अंदर फ़ाइलों की सूची प्राप्त करना आवश्यक होता है। इसके लिए ZipArchive के गुणों और विधियों का उपयोग करें:
<?php$zip = new ZipArchive();if ($zip->open('example.zip') === TRUE) { echo "फ़ाइलों की संख्या: " . $zip->numFiles . "<br>"; for ($i = 0; $i < $zip->numFiles; $i++) { $stat = $zip->statIndex($i); echo "फ़ाइल: " . $stat['name'] . " (आकार: " . $stat['size'] . " बाइट)<br>"; } $zip->close();}?>फ़ोल्डर संरचना को बनाए रखते हुए फ़ाइलें जोड़ना
जोड़ते समय निर्देशिका पदानुक्रम को बनाए रखने के लिए, आर्काइव के अंदर फ़ाइल नाम में सापेक्ष पथ का उपयोग करें:
<?php$zip = new ZipArchive();$zip->open('backup.zip', ZipArchive::CREATE);
// उपफ़ोल्डर को बनाए रखते हुए फ़ाइल जोड़ें$zip->addFile('/var/www/images/photo.jpg', 'images/photo.jpg');// या पूरे फ़ोल्डर को पुनरावर्ती रूप से जोड़ें$zip->addPattern('/\\.(jpg|png)$/', '/var/www/images/', ['add_path' => 'images/']);
$zip->close();?>आर्काइव से फ़ाइलें हटाना
किसी विशिष्ट
पुस्तकालय में भी
Swift में S3 और क्लाउड स्टोरेज (iOS/macOS): AWSS3 लाइब्रेरी
स्विफ्ट (iOS/macOS) में HTML पार्सिंग: SwiftSoup और Fuzi लाइब्रेरीज़
Swift में Markdown काम करना (iOS/macOS): Down, SwiftMarkdown लाइब्रेरी
Predis: PHP के लिए Redis क्लाइंट - इंस्टॉलेशन, कनेक्शन और उदाहरण
PHP में रेट लिमिटिंग: साइट सुरक्षा के लिए अनुरोध आवृत्ति सीमित करना