2012-08-23 19 views
5

को सहेजने के लिए संकेत नहीं दे रहा है मेरे पास एक IHttpHandler के साथ एक एएसएक्स फ़ाइल है। जब मैं इस IHttpHandler को कुछ डेटा पोस्ट करता हूं, तो मैं कुछ काम करता हूं, एक फ़ाइल बनाता हूं, और फिर वह फ़ाइल उपयोगकर्ता को वापस लौटाती है ताकि वे फ़ाइल को अपने ब्राउज़र के माध्यम से सहेज सकें।HttpResponse को फ़ाइल लिखना, ब्राउज़र

HttpResponse response = context.Response; 
response.ClearContent(); 
response.Clear(); 
response.ContentType = "application/octet-stream"; 
response.AddHeader("Content-Disposition", "attachment; filename=MYFILE.EXT"); 
response.WriteFile("C:\tempstuff\MYFILE.EXT"); 

में एक अंत में बाद में ब्लॉक, मैं फोन करेगा:

बनाई गई फ़ाइल के साथ

, यह मैं कैसे फ़ाइल वापस जवाबी कार्रवाई के लिए लिखने के लिए प्रयास है

response.End() 

जब मैं इस हैंडलर को कॉल करें, कुछ भी नहीं होता है। प्रतिक्रिया 200 वापस आ गया है, कोई त्रुटि नहीं फेंक दी गई है - लेकिन ब्राउज़र उपयोगकर्ता को इस फ़ाइल को सहेजने के लिए संकेत नहीं देगा। यह प्रतिक्रिया

HTTP/1.1 200 OK 
Server: ASP.NET Development Server/10.0.0.0 
Date: Thu, 23 Aug 2012 12:12:19 GMT 
X-AspNet-Version: 4.0.30319 
Content-Disposition: attachment; filename=MYFILE.EXT 
Cache-Control: private 
Content-Type: application/octet-stream 
Content-Length: 781053 
Connection: Close 

[raw content of the file here] 

मेरे लिए सही लगती है:

यहाँ क्या प्रतिक्रिया, के रूप में फ़िडलर द्वारा कब्जा कर लिया, लग रहा है की तरह है। इसमें फ़ाइल की सामग्री शामिल है - हालांकि किसी भी प्रमुख ब्राउज़र के तहत, कोई फ़ाइल संवाद फ़ाइल को सहेजने के लिए मुझे संकेत नहीं देता है।

क्या मैं गलत यहाँ कर रहा हूँ?

अद्यतन: यदि यह मदद करता है, तो यहां मैं अपने वेब एप्लिकेशन से जावास्क्रिप्ट का उपयोग कर रहा हूं ताकि यह HttpHandler को कॉल किया जा सके।

$.ajax({ 
    type: 'POST', 
     url: ashxUrl, 
     data: postData, 
     success: function (result) { 
      // Doin' stuff on success 
     }, 
     error: function (error) { 
      // Doin' stuff on error. 
     } 
}); 
+0

मैंने एक ही चीज़ की कोशिश की। मैंने ऊपर दिए गए कोड के साथ 'सरल.एक्सएक्स' का एक सरल पृष्ठ बनाया है, और इसे दूसरे पृष्ठ से 'Default.aspx' पर पोस्ट किया है। सभी तीन ब्राउज़रों (आईई, एफएफ, क्रोम) में, यह पूरी तरह से काम करता है, और मुझे फिडलर में लगभग समान हेडर मिल रहे हैं। यकीन नहीं है कि और क्या चल रहा है? – mellamokb

+0

दिलचस्प! शायद यह मेरी जावास्क्रिप्ट का वर्णन करने में मदद करेगा जहां मैं स्पष्ट रूप से यह अनुरोध कॉल कर रहा हूं। मैं इस स्निपेट को शामिल करने के लिए मुख्य पोस्ट को संपादित करूंगा। संपादित करें: मैंने जेएस स्निपेट जोड़ा। –

+6

आह। हाँ, मदद करता है। आप [AJAX के माध्यम से फ़ाइल डाउनलोड नहीं कर सकते] [http://stackoverflow.com/questions/4814877/how-to-download-file-via-ajax-with-http-post-ie-some-info-in -तन)। आपको एक वैकल्पिक समाधान की आवश्यकता होगी [इस तरह] (http://stackoverflow.com/questions/3499597/javascript-jquery-to-download-file-via-post-with-json-data)। – mellamokb

उत्तर

2

आपने कहा है कि आप वेब जावा के परिणामों को अपने जावास्क्रिप्ट में उपलब्ध करा सकते हैं। यह बहुत परेशान होगा यदि इससे ब्राउजर आपको इसे सहेजने के लिए प्रेरित करता है, तो सभी AJAX असंभव होगा।

आप ब्राउज़र को स्वयं कॉल करना चाहते हैं। एक जीईटी के लिए self.location.href सेट करने का एक साधारण मामला होगा। एक पोस्ट के लिए आमतौर पर डेटा के साथ छिपे हुए फॉर्म को भरने का सबसे आसान तरीका है, और फिर submit() इसे।

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