PHP में ZIP आर्काइव: ZipArchive और कंप्रेशन लाइब्रेरी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में ZIP आर्काइव के साथ काम करने का परिचय

ZIP आर्काइव वेब डेवलपमेंट में डेटा कंप्रेशन के सबसे लोकप्रिय फॉर्मेट में से एक है। PHP में इसके लिए Zip एक्सटेंशन नेटिव रूप से उपलब्ध है, जो शक्तिशाली ZipArchive क्लास प्रदान करता है। इससे डेवलपर्स बिना किसी थर्ड-पार्टी लाइब्रेरी के आसानी से आर्काइव बना सकते हैं, पढ़ सकते हैं, अपडेट कर सकते हैं और फ़ाइलें निकाल सकते हैं।

PythonLib.ru एजुकेशनल पोर्टल पर हम PHP में ZIP के साथ काम करने के सभी पहलुओं को कवर करेंगे: बेसिक ऑपरेशन से लेकर एडवांस्ड तकनीक, जिसमें पासवर्ड प्रोटेक्टेड कंप्रेशन, बड़े डेटा को हैंडल करना और आउटपुट बफरिंग के साथ इंटीग्रेशन शामिल है।

Zip एक्सटेंशन की इंस्टॉलेशन और जाँच

ZipArchive क्लास PHP 5.2.0 से उपलब्ध है। इसका उपयोग करने के लिए सर्वर कॉन्फ़िगरेशन में zip एक्सटेंशन सक्षम होना चाहिए। इसे phpinfo() फंक्शन या एक सरल स्क्रिप्ट से जाँचा जा सकता है:

<?php
if (class_exists('ZipArchive')) {
    echo "Zip एक्सटेंशन उपलब्ध है";
} else {
    echo "Zip एक्सटेंशन इंस्टॉल नहीं है";
}
?>

अधिकांश आधुनिक होस्टिंग में यह एक्सटेंशन पहले से इंस्टॉल होता है। यदि नहीं है, तो सर्वर एडमिन से संपर्क करें या पैकेज मैनेजर से इंस्टॉल करें (जैसे, Debian/Ubuntu के लिए apt-get install php-zip)।

ZipArchive के साथ बुनियादी ऑपरेशन

1. नया ZIP आर्काइव बनाना

आर्काइव बनाने के लिए open() मेथड का उपयोग ZipArchive::CREATE फ्लैग के साथ करें। एक बुनियादी उदाहरण देखें:

<?php
$zip = new ZipArchive();
$filename = 'example.zip';

if ($zip->open($filename, ZipArchive::CREATE) === TRUE) {
    // स्ट्रिंग से फ़ाइल जोड़ना
    $zip->addFromString('hello.txt', 'नमस्ते, दुनिया!');
    
    // मौजूदा फ़ाइल जोड़ना
    $zip->addFile('/path/to/image.jpg', 'images/photo.jpg');
    
    // खाली डायरेक्टरी जोड़ना
    $zip->addEmptyDir('documents');
    
    $zip->close();
    echo "आर्काइव सफलतापूर्वक बन गया";
} else {
    echo "आर्काइव बनाने में त्रुटि";
}
?>

ध्यान दें: addFile() का दूसरा पैरामीटर आर्काइव के अंदर का पथ सेट करता है, जिससे फ़ोल्डर स्ट्रक्चर बनाया जा सकता है।

2. ZIP आर्काइव को अनज़िप करना

सभी फ़ाइलें निकालने के लिए extractTo() मेथड का उपयोग करें:

<?php
$zip = new ZipArchive();
if ($zip->open('example.zip') === TRUE) {
    $zip->extractTo('/destination/folder/');
    $zip->close();
    echo "आर्काइव अनज़िप हो गया";
} else {
    echo "आर्काइव खोलने में विफल";
}
?>

केवल एक विशिष्ट फ़ाइल निकालने के लिए दूसरे आर्गुमेंट में उसका आंतरिक पथ दें:

$zip->extractTo('/destination/', 'images/photo.jpg');

3. बिना अनज़िप किए आर्काइव की सामग्री पढ़ना

कभी-कभी केवल आर्काइव के अंदर फ़ाइलों की सूची देखनी होती है:

<?php
$zip = new ZipArchive();
if ($zip->open('archive.zip') === TRUE) {
    for ($i = 0; $i < $zip->numFiles; $i++) {
        $stat = $zip->statIndex($i);
        echo "फ़ाइल: " . $stat['name'] . " (आकार: " . $stat['size'] . " बाइट)\n";
    }
    $zip->close();
}
?>

statIndex() मेथड एक ऐरे लौटाता है जिसमें नाम, आकार, मॉडिफिकेशन डेट, CRC32 और अन्य मेटाडेटा होते हैं।

एडवांस्ड सुविधाएँ

पासवर्ड से सुरक्षित कंप्रेशन (PHP 7.2+)

PHP 7.2 से, ZipArchive AES-256 एल्गोरिदम के माध्यम से पासवर्ड एन्क्रिप्शन सपोर्ट करता है:

<?php
$zip = new ZipArchive();
if ($zip->open('protected.zip', ZipArchive::CREATE) === TRUE) {
    $zip->setPassword('supersecret');
    $zip->addFile('document.pdf');
    // अंतिम जोड़ी गई फ़ाइल के लिए एन्क्रिप्शन चालू करें
    $zip->setEncryptionName('document.pdf', ZipArchive::EM_AES_256);
    $zip->close();
    echo "एन्क्रिप्टेड आर्काइव बन गया";
}
?>

डायरेक्टरी स्ट्रक्चर को बनाए रखते हुए कंप्रेशन

रिकर्सिव

अनुशंसाएँ