Node.js में ZIP-आर्काइव के साथ काम करने के लिए Adm-Zip लाइब्रेरी
वेब एप्लिकेशन, सर्वर उपयोगिताओं या Node.js पर डेटा प्रोसेसिंग टूल विकसित करते समय, अक्सर ZIP-आर्काइव के साथ काम करने की आवश्यकता होती है: उपयोगकर्ता को भेजने से पहले फ़ाइलों को पैक करना, प्राप्त आर्काइव को निकालना या पूरी तरह से निकाले बिना सामग्री में हेरफेर करना। JavaScript इकोसिस्टम में इन कार्यों के लिए कई लाइब्रेरी हैं, और उपयोग में सबसे लोकप्रिय और सरल में से एक Adm-Zip है।
Adm-Zip क्या है?
Adm-Zip Node.js के लिए एक शुद्ध JavaScript लाइब्रेरी है जो बाहरी निर्भरताओं के बिना (उदाहरण के लिए, सिस्टम में zip या unzip उपयोगिता स्थापित किए बिना) ZIP-आर्काइव बनाने, पढ़ने और संशोधित करने की अनुमति देती है। यह डिस्क पर फ़ाइलों और मेमोरी में बफ़र्स दोनों के साथ काम करता है, जो इसे वेब सर्वर और क्लाउड फ़ंक्शंस के लिए आदर्श बनाता है।
लाइब्रेरी की मुख्य क्षमताएँ:
- फ़ाइलों, फ़ोल्डरों या स्ट्रिंग डेटा से नए ZIP-आर्काइव बनाना।
- निर्दिष्ट निर्देशिका या बफ़र में निकालने के साथ आर्काइव को अनज़िप करना।
- पूरी तरह से निकाले बिना आर्काइव की सामग्री पढ़ना (फ़ाइलों की सूची देखना, अलग-अलग प्रविष्टियाँ पढ़ना)।
- मौजूदा आर्काइव के अंदर फ़ाइलों को जोड़ना, हटाना और अपडेट करना।
- आर्काइव और अलग-अलग फ़ाइलों पर टिप्पणियों के साथ काम करना।
- पासवर्ड के लिए समर्थन (ZipCrypto एन्क्रिप्शन)।
- बड़े डेटा को संसाधित करने के लिए स्ट्रीम के साथ काम करना।
स्थापना
लाइब्रेरी की स्थापना npm पैकेजों के लिए मानक है:
npm install adm-zipस्थापना के बाद, आप इसे अपने प्रोजेक्ट में शामिल कर सकते हैं:
const AdmZip = require('adm-zip');ZIP-आर्काइव बनाना
नया आर्काइव बनाना बहुत आसान है। आप अलग-अलग फ़ाइलों के साथ-साथ पूरे फ़ोल्डर भी जोड़ सकते हैं।
const AdmZip = require('adm-zip');
// आर्काइव का एक नया इंस्टेंस बनाएँconst zip = new AdmZip();
// स्ट्रिंग से फ़ाइल जोड़ेंzip.addFile('hello.txt', Buffer.from('Hello, World!', 'utf8'));
// डिस्क से फ़ाइल जोड़ेंzip.addLocalFile('/path/to/image.jpg');
// स्थानीय फ़ोल्डर की सामग्री जोड़ेंzip.addLocalFolder('/path/to/documents', 'backup/docs');
// आर्काइव को डिस्क पर लिखेंzip.writeZip('myarchive.zip');
console.log('आर्काइव बनाया गया: myarchive.zip');आप HTTP प्रतिक्रिया के माध्यम से भेजने के लिए आर्काइव को बफ़र के रूप में भी प्राप्त कर सकते हैं:
const zipBuffer = zip.toBuffer();// अब zipBuffer को बाइनरी फ़ाइल के रूप में उपयोगकर्ता को भेजा जा सकता हैZIP-आर्काइव निकालना
निकालना कुछ पंक्तियों में किया जाता है। लाइब्रेरी सभी फ़ाइलों को निकालने और अलग-अलग प्रविष्टियों को पढ़ने दोनों का समर्थन करती है।
const AdmZip = require('adm-zip');
try { // मौजूदा आर्काइव खोलें const zip = new AdmZip('myarchive.zip');
// सभी फ़ाइलों को निर्दिष्ट फ़ोल्डर में निकालें zip.extractAllTo('extracted/', true); // true — मौजूदा फ़ाइलों को ओवरराइट करें
console.log('आर्काइव extracted/ फ़ोल्डर में निकाला गया');} catch (err) { console.error('निकालने में त्रुटि:', err.message);}यदि आपको बिना निकाले आर्काइव की सामग्री पढ़ने की आवश्यकता है:
const zip = new AdmZip('myarchive.zip');
// प्रविष्टियों (फ़ाइलों और फ़ोल्डरों) की सरणी प्राप्त करेंconst zipEntries = zip.getEntries();
zipEntries.forEach(entry => { if (!entry.isDirectory) { console.log(`फ़ाइल: ${entry.entryName}, आकार: ${entry.header.size} बाइट`); // फ़ाइल की सामग्री को स्ट्रिंग के रूप में पढ़ें const content = entry.getData().toString('utf8'); console.log('सामग्री:', content.substring(0, 100)); }});पासवर्ड के साथ काम करना (एन्क्रिप्शन)
Adm-Zip ZipCrypto एन्क्रिप्शन का समर्थन करता है। कृपया ध्यान दें: यह सबसे आधुनिक तरीका नहीं है (AES समर्थित नहीं है), लेकिन बुनियादी सुरक्षा के लिए यह उपयुक्त है।
<
पुस्तकालय में भी
C++ में रिएक्टिव प्रोग्रामिंग: लाइब्रेरीज़ और व्यावहारिक उपयोग
C++ के लिए HTTP-क्लाइंट: नेटवर्क कार्य के लिए शीर्ष लाइब्रेरीज़
Go में मशीन लर्निंग: Golang के लिए ML, न्यूरल नेटवर्क और NLP लाइब्रेरी
Apache HttpClient Java: पूर्ण गाइड उदाहरणों के साथ