पॉज़-सक्षम डाउनलोड कैसे काम करते हैं?


19

मैं डेटा डाउनलोड करने के लिए इंटरनेट डाउनलोड प्रबंधक (IDM) का उपयोग करता हूं, और मैंने देखा है कि यह प्रगति विंडो डाउनलोड करता है, यह दिखाता है कि डाउनलोड पॉज़-सक्षम (फिर से शुरू करने योग्य) है या नहीं। आमतौर पर, फ़ाइल-साझाकरण साइटें कनेक्शन के टूटने पर स्थानांतरण को फिर से शुरू करने की अनुमति नहीं देती हैं।

तो सवाल यह है: यह कैसे काम करता है? क्या यह कुछ कॉन्फिग है जो विच्छेद पर किया गया है? यह धार डाउनलोड से अलग कैसे है, जहां डाउनलोड हमेशा फिर से शुरू होता है।

जवाबों:


27

कोडिंग के नजरिए से, HTTP रिस्पांस स्ट्रीम में एक डाउनलोड सिर्फ एक बाइट सरणी है।

HTTP 1.1 प्रोटोकॉल (पेज 30 देखें) हैडर में एक क्षेत्र 'सीमा' है, जो बाइट ऑफसेट और प्रतिक्रिया का अनुरोध किया की लंबाई निर्दिष्ट करने के लिए अनुरोध की अनुमति देता है कहा जाता है भी शामिल है।

तो संक्षेप में आप कह सकते हैं, "मुझे इस URL पर HTTP ऑब्जेक्ट दें, लेकिन मैं केवल 1024 वां - 4096 वां बाइट्स चाहता हूं"। क्लाइंट ब्राउज़र तो पहले से डाउनलोड की गई फ़ाइल के हिस्से में बाइट स्ट्रीम को जोड़ देता है। क्लाइंट बता सकता है कि उसे पहले से डाउनलोड की गई फ़ाइल की लंबाई की जांच करके बस फिर से शुरू करने की आवश्यकता है, और आवश्यक ऑफसेट को निर्धारित करने के लिए इसे बढ़ाता है।

जैसा कि आपका डाउनलोड प्रबंधक कैसे बता सकता है, यह एक HTTP "HEAD" अनुरोध भेजता है। यदि प्रतिक्रिया कोड 206 (आंशिक सामग्री) है, तो http स्ट्रीम फिर से शुरू करने का समर्थन करता है।


फ़ाइलों को स्थानांतरित करने के लिए FTP भी आमतौर पर इस्तेमाल किया जाने वाला प्रोटोकॉल है। यह प्राथमिक साधन हुआ करता था, हालांकि अब HTTP संभवतः अधिक सामान्य है।
क्रिसइंनमोंटोन

एफ़टीपी अनिवार्य रूप से एक ही निर्माण का उपयोग करता है, हालांकि इससे पहले कि मैं इसका उपयोग करने वाले कोड को लागू करने का प्रयास करूं, मुझे बारीकियों को देखना होगा।
फ्रैंक थॉमस

1

यह एक सतत कुकी का उपयोग करके संभाला जा सकता है , सत्र कुकी के साथ भ्रमित होने की नहीं है या आप [Viewstate] का उपयोग कर सकते हैं यदि साइट ASP.NET पर बनाई गई है, हालांकि यह एक अच्छा अभ्यास नहीं है। फ्रैंक थॉमस का सबसे अच्छा जवाब है।


1
मुझे यकीन नहीं है कि इस कारण को अस्वीकार कर दिया गया था इसलिए मैंने इसे बढ़ा दिया।
रामहाउंड

@FrankThomas, मैंने अभी-अभी हमारे वरिष्ठ डेवलपर के साथ कुछ तथ्यों की पुष्टि की और उन्होंने कहा कि आप एक '' ब्युटीफुल कुकी का उपयोग कर सकते हैं या बाइट एरे की इंडेक्स सूचना को स्टोर करने और ब्राउज़र ब्राउजर डाउनलोडर के माध्यम से डाउनलोड को फिर से शुरू करने में उपयोग करने के लिए देख सकते हैं, हालांकि यह नहीं था। एक अच्छा अभ्यास। आमतौर पर, बड़ी पुनरारंभ योग्य फ़ाइलों के लिए, जैसे कि MS उत्पाद, आप एक डाउनलोड प्रबंधक एप्लिकेशन डाउनलोड करेंगे और यह आपके कहे अनुसार ही काम करेगा। मैंने आपके उत्तर को गलत ठहराया है।
जोश कैंपबेल

यह उत्तर निरर्थक प्रतीत होता है। यह निर्धारित करने की समस्या नहीं है कि फ़ाइल को कितना डाउनलोड किया गया है; ग्राहक यह पहले से ही जानता है। आप कुकी का उपयोग करके सर्वर पर वापस संचार कर सकते हैं, लेकिन बेहतर दृष्टिकोण हैं। हेडर, GET या POST परमेस, आदि सवाल यह पूछ रहा है कि फाइल ट्रांसफर कैसे फिर से शुरू किया जाए, न कि किसी सर्वर को जानकारी कैसे पास की जाए।
क्रिसइंनमोंटोन

ओपी ने पूछा कि यह कैसे काम करता है और मैंने उसे कुकीज़ की दिशा में इशारा किया ताकि वह आगे शोध कर सके। एक दर्जन अलग-अलग तरीके हैं जो एक डेवलपर फिर से डाउनलोड करने योग्य बना सकता है। मैंने इसे स्टार्ट-स्टॉप इंडेक्स के माध्यम से डाउनलोड स्थिति को ट्रैक करने के लिए क्लाइंट पर कुकीज़ का उपयोग करके किया होगा और गणना करने के लिए बैकएंड पर सी # का इस्तेमाल किया (इंडेक्स एक्स से इंडेक्स वाई तक) की गणना की गई और फिर वाई से फिर से शुरू किया गया। एक डेस्कटॉप डाउनलोड प्रबंधक ठीक यही काम करता है, केवल अपनी जानकारी को एक टेक्स्ट फ़ाइल या डेटाबेस में संग्रहीत करता है। यह स्टैकओवरफ़्लो नहीं है, मैं सोर्स कोड नहीं लिख रहा हूँ।
जोश कैंपबेल

@JoshCampbell, समस्या यह है कि आपका समाधान केवल आपके विशिष्ट क्लाइंट सॉफ़्टवेयर और सर्वर सॉफ़्टवेयर का उपयोग करने वाले लोगों के लिए काम करेगा। इस समस्या को हल करने के मानक तरीके हैं, जैसा कि फ्रैंक अपने जवाब में बताते हैं, और कस्टम-कोड एक की आवश्यकता नहीं है। इसके अतिरिक्त, आपका उत्तर उस प्रक्रिया को इंगित नहीं करता है जिसके द्वारा कुछ साइटें ओपी को फिर से डाउनलोड करने की अनुमति देती हैं, और इसलिए प्रश्न का उत्तर नहीं देती हैं। इसलिए मैंने टिप्पणी की।
ChrisInEdmonton
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.