2012-06-06 14 views
15

से फ़ाइल डाउनलोड करने का सबसे अच्छा तरीका क्या है मेरे पास दिलचस्प कार्य है जिसके लिए मुझे क्लाइंट को सर्वर (एएसपी.नेट) से गतिशील रूप से जेनरेट की गई फ़ाइल डाउनलोड करने की आवश्यकता होती है। क्लाइंट साइड पर यह सिर्फ जावास्क्रिप्ट (jQuery) है और क्लाइंट डेटा को निर्यात करने के तरीके को अनुकूलित करने के लिए कई पैरामीटर उत्पन्न करने में सक्षम है।सर्वर

सर्वर से फ़ाइल डाउनलोड करने का सबसे अच्छा तरीका क्या है? क्या मुझे डब्ल्यूसीएफ सेवा का उपयोग करना चाहिए जैसे कि here या this one जैसे सरल पृष्ठ का वर्णन किया गया है?

मुझे नहीं पता कि पेज को फिर से लोड किए बिना फ़ाइल कैसे डाउनलोड करें (मुझे यकीन नहीं है कि $ .ajax इस मामले में काम करेगा)। क्या कोई मुझे इस विषय पर कुछ दिशा दे सकता है? धन्यवाद।

+2

मुझे लगता है कि यह इस प्रश्न/उत्तर से संबंधित है: http://stackoverflow.com/questions/3749231/download-file-using-javascript-jquery –

उत्तर

19

सबसे पहले आप एक हैंडलर .ashx

माना कि आप download.ashx पर डाउनलोड करने के लिए फ़ाइल है और आप कुछ parametres है आपकी जावास्क्रिप्ट से पारित करने के लिए है कि, जैसे download.ashx?p1=8827&p2=8831 से फ़ाइल बनाने को पता है कि आप बनाने जा सकते हैं।

फिर अपने जावास्क्रिप्ट पर आप साधारण एक रीडायरेक्ट के रूप में

window.location = "download.ashx?p1=8827&p2=8831"; 

कर सकते हैं या वैकल्पिक आप के लिए window.open उपयोग कर सकते हैं एक ही लगता है

window.open("download.ashx?p1=8827&p2=8831"); 

और अपनी फ़ाइल डाउनलोड शुरू होगा।

बस सुनिश्चित करें कि आप अपने संभाल जैसे पर कुर्की के शीर्षक, और सही contenttype सेट किया हुआ है:

HttpContext.Current.Response.ContentType = "application/octet-stream"; 
    HttpContext.Current.Response.AddHeader("Content-Disposition", 
        "attachment; filename=" + SaveAsThisFileName); 

सरल और स्पष्ट है, दोनों का परीक्षण किया और काम कर रहे।

इसके अलावा आप इस उत्तर पर दिलचस्प भी हो सकते हैं: How to handle errors

+0

आप त्रुटि प्रबंधन कैसे करते हैं? उदाहरण के लिए, आप .ashx फ़ाइल में फेंकने वाले अपवाद को कैसे संभालेंगे? – Steve

+1

@Steve यदि आपको कोई त्रुटि है तो आपको पृष्ठ नहीं मिला है, त्रुटि लॉग करें और इसे ठीक करें। – Aristos

+0

यह काम करता है, लेकिन अगर यूआरएल लंबाई बहुत लंबी है तो क्या होगा? –

संबंधित मुद्दे