2012-01-17 15 views
16

मैं बटन क्लिक पर ब्राउज़र पर एक टेक्स्ट फ़ाइल डाउनलोड करने के लिए एक सरल परीक्षण पृष्ठ लिख रहा हूं। मुझे वास्तव में एक अजीब त्रुटि मिल रही है जिसे मैंने कभी नहीं देखा है। कोई विचार?ASP.Net क्लाइंट ब्राउज़र पर फ़ाइल डाउनलोड करें

त्रुटि 'Response.End();' पर होती है। और फ़ाइल कभी नहीं ग्राहक ब्राउज़र को हो जाता है

कोड:

string filePath = "C:\\test.txt"; 
    FileInfo file = new FileInfo(filePath); 
    if (file.Exists) 
    { 
    Response.ClearContent(); 
    Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
    Response.AddHeader("Content-Length", file.Length.ToString()); 
    Response.ContentType = "text/plain"; 
    Response.TransmitFile(file.FullName); 
    Response.End(); 
    } 

त्रुटि:

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.

+1

अंत को हटाएं, और Responce.Flush() और Responce.AplicationInstance.CompleteRequest(); – Aristos

+0

अच्छी कॉल, जिसने अपवाद को फेंकने से रोक दिया। लेकिन कोड अभी भी ब्राउज़र पर कुछ भी हो रहा है बिना पूरा करता है। ?? – tier1

उत्तर

26

इसे करने के लिए बदलने का प्रयास करें।

Response.Clear(); 
Response.ClearHeaders(); 
Response.ClearContent(); 
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
Response.AddHeader("Content-Length", file.Length.ToString()); 
Response.ContentType = "text/plain"; 
Response.Flush(); 
Response.TransmitFile(file.FullName); 
Response.End(); 
+0

पहले जैसा ही है, कोड के माध्यम से चलता है और Response.End() पर एक अपवाद फेंकता है। यह अजीब लगता है कि Response.TransmitFile ठीक निष्पादित करता है लेकिन फ़ाइल स्थानांतरित नहीं होती है? – tier1

+0

असल में, यह काम करता है। धन्यवाद! – tier1

+1

@ अश्विन: मैं अपने कोड-बैक फ़ाइल में इस समाधान का प्रयास कर रहा हूं (मेरी समस्या http://stackoverflow.com/questions/18599735/downloading-a- गतिशील- फ़ाइल) है, लेकिन इससे कोई फर्क नहीं पड़ता कि मैं कहां कॉल करने का प्रयास करता हूं ' TransmitFile() 'या 'WriteFile()' मुझे अपवाद मिल रहा है: ** HTTP शीर्षलेख भेजे जाने के बाद सर्वर सामग्री प्रकार सेट नहीं कर सकता है। ** कोई सुझाव? –

7

बस ऊपर समाधान यदि आप डाउनलोड की गई फ़ाइल के नाम के साथ समस्या हो रही है करने के लिए एक मामूली अलावा ...

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.Name + "\""); 

यह सटीक फ़ाइल नाम वापस आ जाएगी, भले ही यह रिक्त स्थान या अन्य वर्ण हैं।

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