फ़ाइलों को क्लाउड स्टोरेज में रखने के बजाय स्थानीय स्टोरेज में डाउनलोड करने के कई फायदे हैं। इनमें आसान पहुंच, इंटरनेट कनेक्शन के बिना पहुंच और आपके डेटा का पूर्ण स्वामित्व शामिल है।
आप अंतर्निहित Node.js मॉड्यूल का उपयोग करके एकल और एकाधिक फ़ाइलें डाउनलोड कर सकते हैं। समान परिणाम प्राप्त करने के लिए आप इसके बजाय किसी तृतीय-पक्ष लाइब्रेरी का भी उपयोग कर सकते हैं।
तृतीय-पक्ष लाइब्रेरी के बिना फ़ाइलें डाउनलोड करना
तृतीय-पक्ष पैकेज की सहायता के बिना Node.js का उपयोग करके फ़ाइल डाउनलोड करने के लिए, आपको तीन मुख्य Node.js मॉड्यूल की आवश्यकता होगी: fs, HTTPS के, और पथ.
fs मॉड्यूल पढ़ने, बनाने, अद्यतन करने, हटाने और नाम बदलने सहित कई फ़ाइल कार्यों का समर्थन करता है। HTTPS के मॉड्यूल अनुरोधों को संभालने और प्रतिक्रिया देने के लिए एक वेब सर्वर बनाता है। पथ मॉड्यूल निर्देशिका और फ़ाइल पथों के साथ सहभागिता करने का एक तरीका प्रदान करता है।
इन मॉड्यूल का उपयोग करके, आप वेब सर्वर से फ़ाइल संसाधन तक पहुँचने के लिए HTTP GET अनुरोध भेज सकते हैं और फिर अपने स्थानीय सिस्टम में संसाधन की प्रतिलिपि बना सकते हैं।
आरंभ करने के लिए, आवश्यक मॉड्यूल आयात करें:
कॉन्स्ट एचटीटीपीएस = ज़रूरत होना('https');
कॉन्स्ट एफएस = ज़रूरत होना('एफएस');
कॉन्स्ट पथ = ज़रूरत होना('पथ');
इसे सहेजने के लिए आपको URL से फ़ाइल नाम को एक अच्छे डिफ़ॉल्ट नाम के रूप में उपयोग करने की आवश्यकता होगी। आप पथ मॉड्यूल का उपयोग कर सकते हैं .बेसनाम () किसी फ़ाइल का नाम उसके URL से प्राप्त करने की विधि। यह विधि पथ तर्क लेती है और पथ के अंतिम भाग को वापस कर देती है।
उदाहरण के लिए:
कॉन्स्ट फ़ाइल नाम = पथ.बेसनाम (यूआरएल);
फिर, सर्वर से फ़ाइल का अनुरोध करके अनुरोध करें https.get () तरीका। यह विधि URL को पहले तर्क के रूप में और दूसरे तर्क के रूप में प्रतिक्रिया के लिए कॉलबैक फ़ंक्शन लेती है
इधर दें यूआरएल चर पहले तर्क के रूप में और फिर प्रसंस्करण के लिए कॉलबैक फ़ंक्शन जब यह विधि प्रतिक्रिया स्ट्रीम प्राप्त करती है:
https.get (url, (res) => {
})
कॉलबैक फ़ंक्शन में, आप उपयोग कर सकते हैं fs.createWriteStream () एक नई लिखने योग्य स्ट्रीम बनाने की विधि, पास करना फ़ाइल का नाम एक तर्क के रूप में चर।
उदाहरण के लिए:
कॉन्स्ट फ़ाइलस्ट्रीम = fs.createWriteStream (फ़ाइल नाम);
आर ई।पाइप(फ़ाइल धारा);
createWriteStream () विधि फ़ाइल में डेटा लिखने की प्रक्रिया को आसान बनाती है, खासकर जब आप डेटा के बड़े हिस्से को संभाल रहे हों।
पाइप() विधि तब GET प्रतिक्रिया डेटा स्ट्रीम को भेजता है फ़ाइल धारा वस्तु।
स्क्रिप्ट द्वारा फ़ाइल डाउनलोड करना समाप्त करने के बाद कंसोल में संदेश लॉग करने के लिए संलग्न करें a ।पर() घटना उत्सर्जक के लिए फ़ाइल धारा चर:
फ़ाइलस्ट्रीम.ऑन ('खत्म करना', () => {
फ़ाइल धारा।बंद करना();
सांत्वना देना।लकड़ी का लट्ठा('डाउनलोड समाप्त');
});
फाइलस्ट्रीम ऑब्जेक्ट ए का उत्सर्जन करता है खत्म करना घटना जब इसने फ़ाइल में सभी डेटा लिखे हैं। के माध्यम से इसे पकड़ें ।पर() विधि और बंद करने के लिए कॉलबैक फ़ंक्शन प्रदान करें फ़ाइल धारा और कंसोल पर एक संदेश लॉग करें।
बेहतर निष्पादन के लिए और कुशल स्क्रिप्ट पुन: प्रयोज्य, इस कोड को एक ऐसे फ़ंक्शन में लपेटें जो URL को उसके तर्क के रूप में लेता है:
समारोहडाउनलोड फ़ाइल(यूआरएल) {
कॉन्स्ट फ़ाइल नाम = पथ.बेसनाम (यूआरएल);https.get (url, (res) => {
कॉन्स्ट फ़ाइलस्ट्रीम = fs.createWriteStream (फ़ाइल नाम);
आर ई।पाइप(फ़ाइल धारा);
फ़ाइलस्ट्रीम.ऑन ('खत्म करना', () => {
फ़ाइल धारा।बंद करना();
सांत्वना देना।लकड़ी का लट्ठा('डाउनलोड समाप्त')
});
})
}
फ़ंक्शन चलाने के लिए, इसे कॉल करें और उस फ़ाइल का URL पास करें जिसे आप डाउनलोड करना चाहते हैं:
डाउनलोड फ़ाइल([फ़ाइल url]);
स्क्रिप्ट चलाने के लिए, अपना टर्मिनल खोलें और एंटर करें नोड जावास्क्रिप्ट फ़ाइल के नाम के बाद:
नोड[स्क्रिप्ट नाम]
यह स्क्रिप्ट आपके द्वारा पास की गई फ़ाइल URL को डाउनलोड करेगी डाउनलोड फ़ाइल() कार्य करें और इसे अपनी कार्यशील निर्देशिका में सहेजें।
फ़ाइलें डाउनलोड करते समय त्रुटियों को संभालना
Node.js में, विशिष्ट त्रुटियाँ जैसे स्ट्रीम में लिखना, खराब सेवा कनेक्शन, या फ़ाइल के साथ समस्याएँ फ़ाइलें डाउनलोड करते समय हो सकती हैं। समस्या से निपटने में सक्षम होने के लिए ये त्रुटियां होने पर त्रुटि संदेशों को लॉग करना महत्वपूर्ण है।
ट्राई/कैच ब्लॉक करें
ट्राइ-कैच ब्लॉक एक प्रोग्रामिंग संरचना है जो आपको अपने कोड में संभावित त्रुटियों और अपवादों को संभालने में सक्षम बनाती है।
ट्राइ-एंड-कैच ब्लॉक ट्राई...कैच ब्लॉक बनाते हैं। कोशिश ब्लॉक का कोड पहले चलता है, और अगर कोशिश ब्लॉक अपवाद फेंकता है तो कैच ब्लॉक का कोड चलता है।
कोशिश {
डाउनलोड फ़ाइल([फ़ाइल url]);
} पकड़ना (गलती) {
सांत्वना देनालॉग (त्रुटि);
}
यह सुनिश्चित करने के लिए कि आप डाउनलोड से संबंधित किसी भी त्रुटि को पकड़ सकते हैं, कोशिश/कैच ब्लॉक का उपयोग करें। फिर आप किसी भी त्रुटि को आवश्यक रूप से संभाल सकते हैं, जैसे कि इसे कंसोल में लॉग करना या डाउनलोड करने का पुनः प्रयास करना।
HTTP प्रतिक्रिया स्थिति कोड
HTTP प्रतिसादों के लिए स्थिति कोड दिखाते हैं कि कोई विशेष HTTP अनुरोध सफलतापूर्वक किया गया है या नहीं।
उदाहरण के लिए:
https.get (url, (res) => {
कॉन्स्ट कोड = res.statusCode ();
सांत्वना देनालॉग (कोड)
कॉन्स्ट फ़ाइलस्ट्रीम = fs.createWriteStream (फ़ाइल नाम);
});
यदि अनुरोध सफलता सीमा के बाहर स्थिति कोड लौटाता है, 200-299, अनुरोध के साथ एक समस्या थी। फिर HTTP स्थिति कोड जांचें स्थिति कोड का अर्थ देखें आवश्यकतानुसार त्रुटि से निपटने के लिए।
एकाधिक फ़ाइलें डाउनलोड करना
चलते समय फ़ाइल URL को तर्क के रूप में पास करके आप एक साथ कई फ़ाइलें डाउनलोड कर सकते हैं नोड [स्क्रिप्ट नाम]. इस कार्य को करने के लिए, आपको अपनी स्क्रिप्ट के कुछ हिस्सों को संशोधित करना होगा।
जावास्क्रिप्ट में, तर्कों को साथ पारित किया गया नोड कमांड वैश्विक Node.js ऑब्जेक्ट की एक संपत्ति, process.argv में उपलब्ध हैं। यह गुण कमांड लाइन तर्कों की एक सरणी देता है। इस सरणी में पहला तत्व होना चाहिए नोड, वास्तविक आदेश जो आप चलाते हैं। दूसरा स्क्रिप्ट फ़ाइल नाम होगा, फिर प्रत्येक निम्न तर्क एक URL होना चाहिए।
एकाधिक फ़ाइलों को एक साथ डाउनलोड करने के लिए, सरणी को से सहेजें प्रक्रिया.argv एक चर में। फिर पहले दो तत्वों को हटाने के लिए स्लाइस () विधि चलाएँ, जो URL नहीं हैं:
कॉन्स्ट आर्ग = प्रक्रिया.आर्गव;
कॉन्स्ट urls = args.slice (2);
टुकड़ा() विधि एक सरणी में चयनित तत्वों से एक नई सरणी बनाता है। यह विधि निर्दिष्ट प्रारंभ से निर्दिष्ट (गैर-समावेशी) अंत तक का चयन करती है।
इस मामले में, 2 का मान पास करने से हटा दिया जाता है नोड कमांड का नाम और आपकी स्क्रिप्ट फ़ाइल का नाम.
आखिरकार, जावास्क्रिप्ट की मानचित्र विधि का उपयोग करना, प्रत्येक तत्व को पास करें यूआरएल सरणी के लिए डाउनलोड फ़ाइल():
urls.map(यूआरएल =>{
डाउनलोड फ़ाइल (यूआरएल)
});
कोड चलाने के लिए, दर्ज करें नोड अपनी JavaScript फ़ाइल के नाम और वे URL जिन्हें आप डाउनलोड करना चाहते हैं, के साथ आदेश दें:
नोड[स्क्रिप्ट नाम]url1url2url3
थर्ड पार्टी लाइब्रेरी का उपयोग करना
आप npm जैसी तृतीय-पक्ष लाइब्रेरी का उपयोग करके भी फ़ाइलें डाउनलोड कर सकते हैं डाउनलोड करना पैकेट।
अपनी स्क्रिप्ट निर्देशिका के अंदर, निम्न npm कमांड को स्थापित करने के लिए चलाएँ डाउनलोड करना पैकेट:
NPM स्थापित करना डाउनलोड करना
अपनी स्क्रिप्ट में डाउनलोड किए गए पैकेज की आवश्यकता है, फिर कमांड-लाइन तर्कों को एक सरणी में सहेजें:
कॉन्स्ट डाउनलोड = ज़रूरत होना('डाउनलोड करना');
कॉन्स्ट आर्ग = प्रक्रिया.आर्गव;
कॉन्स्ट urls = args.slice (2);
अब आप उपयोग कर सकते हैं डाउनलोड करना फ़ाइलें डाउनलोड करने के लिए पुस्तकालय। आप इसे अपने विशेष उद्देश्य के आधार पर कई तरीकों से कर सकते हैं।
उदाहरण के लिए:
asyncसमारोहडाउनलोड फ़ाइल(यूआरएल){
इंतजारवादा.सभी (urls.map ((यूआरएल) => डाउनलोड (यूआरएल, "फ़ाइलें")))
};
डाउनलोड फ़ाइल (यूआरएल);
घोषित करें डाउनलोड फ़ाइल ऐसे काम करता है async, और बनाएँ वादा विशेष कार्य के साथ पूरा होने तक प्रतीक्षा करने के लिए इंतजार कीवर्ड। मैप करें यूआरएल सरणी के लिए डाउनलोड करना कार्य करें और एक स्थानीय फ़ोल्डर का नाम पास करें—"फ़ाइलें", इस मामले में—फ़ाइलों को स्टोर करने के लिए।
स्थानीय फ़ाइल सिस्टम में फ़ाइलें डाउनलोड करना
नोड के अंतर्निहित कार्य, जैसे fs और https, फ़ाइल डाउनलोडर लिखना आसान बनाते हैं। इसे और भी आसान बनाने के लिए, आप तृतीय-पक्ष मॉड्यूल जैसे डाउनलोड का उपयोग कर सकते हैं।
दोनों विधियाँ आपको दूरस्थ सर्वर से फ़ाइलें डाउनलोड करने देती हैं और उन्हें स्थानीय फ़ाइल सिस्टम में सहेजने देती हैं। आपको अपनी आवश्यकताओं के लिए सर्वोत्तम विधि चुननी चाहिए और इसे अपने अगले Node.js एप्लिकेशन में उपयोग करना चाहिए।