2009-08-26 12 views
9

मैं अगर वहाँ एक रास्ता एक सर्वर को फिर से शुरू डाउनलोड functionallity का समर्थन करता है और यदि समर्थित, मैं कैसे फिर से शुरू करने का अनुरोध भेजने करते हैं पता करने के लिए है पता करने के लिए चाहते हैं?HttpWebRequest या WebRequest - फिर से शुरू डाउनलोड ASP.NET

मैं एक समाधान है जहाँ मेरे ASP.NET पेज मेरा करने के लिए एक सर्वर से एक डाउनलोड कर सकते हैं, जैसे कुछ "rapidleech" आज, लेकिन मैं सर्वर मैं कहाँ का अनुरोध कर रहा हूँ अगर जाँच करने के लिए चाहते हैं करता है के लिए देख रहा था डाउनलोड फिर से शुरू करने की कार्यक्षमता का समर्थन करता है।

उत्तर

24

फिर से शुरू करना फ़ाइलें फ़ाइल की बाइट सीमा निर्दिष्ट करके किया जाता आप Range HTTP शीर्ष लेख का उपयोग कर डाउनलोड करने के लिए करना चाहते हैं। यह HttpWebRequest.AddRange समारोह के साथ .NET में किया जा सकता।

उदाहरण के लिए:

request.AddRange(1000); 

सर्वर बता फ़ाइल की 1000 वीं बाइट पर भेजने शुरू करने के लिए होगा।

सर्वर रेंज हैडर का समर्थन करता है, तो यह सामान्य 200 (ठीक) के बजाय 206 (आंशिक सामग्री) का HTTP स्थिति के साथ सामग्री भेज देंगे। HTTP Spec देखें।

यह जांचने के लिए कि सर्वर डाउनलोड करने से पहले फिर से शुरू करने का समर्थन करता है, HttpWebRequest के Method "HEAD" को बदलें। सर्वर 206 (आंशिक सामग्री) वापस आ जाएगी अगर यह शुरू करने का समर्थन करता है, और 200 (ठीक) यदि ऐसा नहीं होता।

+0

द्वारा रेंज विशिष्ट अनुरोध के बारे में अधिक जानकारी पा सकते हैं इसलिए, यदि सर्वर नहीं करता suport, यह एक सामान्य 200 भेजेगा? – Cleiton

+0

हां। HTTP कल्पना के अनुसार, सर्वर सामग्री के सभी के साथ एक सामान्य 200 भेज अगर यह पर्वतमाला का समर्थन नहीं करता होगा। आप यह भी जांच सकते हैं कि आपके प्रारंभिक डाउनलोड प्रयास पर "स्वीकृति-रेंज" शीर्षलेख में निर्दिष्ट सर्वर क्या है, यह देखने के लिए कि क्या यह श्रेणी भेजने में सहायता करता है ("बाइट्स" या "कोई नहीं" होना चाहिए)। यह हेडर आवश्यक नहीं है, इसलिए यदि "स्वीकृति-रेंज" शीर्षलेख नहीं है तो यह श्रेणियां स्वीकार कर सकता है। –

+0

@ एडम, बहुत धन्यवाद! – Cleiton