2012-06-19 48 views
5

मुझे सभी ब्राउज़रों में एक बड़ी समस्या है।सीएसवी डाउनलोड एचटीएम

मेरे पास एक ऐसी साइट है जहां ग्राहक एक सीएसवी फ़ाइल डाउनलोड कर सकते हैं जिसमें उन्हें आवश्यक जानकारी हो।

मेरी समस्या यह है कि सीएसवी फ़ाइल या तो कोई विस्तार या एचटीएम फ़ाइल के रूप में डाउनलोड नहीं होती है।

कोड में मैं .csv के साथ फ़ाइल नाम निर्दिष्ट कर रहा हूं, सर्वर पर फ़ाइल भी एक .csv है।

कोड के रूप में

context.Response.Buffer = true; 
context.Response.Clear(); 
context.Response.ClearHeaders();      
context.Response.ContentType = "text/csv"; 
context.Response.AppendHeader("Content-Disposition", @"attachment,  
    filename=" + ((string)Path.GetFileName(downloadFilePath))); 
context.Response.WriteFile(downloadFilePath); 
context.Response.Flush(); 
context.Response.Close(); 

मैं context.Response.ContentType = "text/html"; और context.Response.ContentType = "application/octet-stream"; की कोशिश की है इस प्रकार है।

यह आईआईएस 6 पर चल रहा है।

क्या कोई जानता है कि इसका कारण क्या हो सकता है?

+0

किस ब्राउज़र पर? –

+0

@ निकोलसमुरे _ मुझे सभी ब्राउज़रों में एक बड़ी समस्या है ._ पाठ पढ़ें। – EaterOfCode

+1

@EaterOfCorpses - और आप 'सभी ब्राउज़रों' से कौन से ब्राउज़र अनुमान लगा सकते हैं? आईई 5, फ़ायरफ़ॉक्स 1? –

उत्तर

0

ठीक है, मैं बाहर काम किया है क्यों फ़ाइलों सीएसवी के रूप में डाउनलोड करने के नहीं हैं।

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

आपकी सभी मदद के लिए धन्यवाद

2

मानते हुए अपने verbatim string literal अपने स्रोत में एक एकल लाइन पर है, तो आप एक ; के साथ अपने Content-Disposition शीर्षक में , की जगह की कोशिश की? उदाहरण मैंने हमेशा अर्द्ध-कोलन का उपयोग किया है।

यह भी अपने फ़ाइल नाम के आसपास उद्धरण चिह्नों का उपयोग करने के लिए विशेष वर्ण से शीर्ष लेख की रक्षा के लिए सुरक्षित हो सकता है:

context.Response.AppendHeader(
    "Content-Disposition", 
    string.Format(
     "attachment; filename=\"{0}\"", 
     Path.GetFileName(downloadFilePath))); 
+1

हां, यह प्रासंगिक आरएफसी की धारा 19.5.1 के अनुपालन में होगा: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html –

+0

चूंकि ओपी के उदाहरण में वर्बैटिम शाब्दिक की आवश्यकता नहीं है , मुझे संदेह है कि यह वास्तव में एक बहु लाइन स्ट्रिंग है। बीटीडब्ल्यू, एस्केप कैरेक्टर वर्बैटिम लिटरल्स के साथ काम नहीं करता है, उस स्थिर को '@ "अटैचमेंट में बदलने का प्रयास करें; फ़ाइल नाम =" "{0}" "" या फिर भी बेहतर, '@' उपसर्ग को हटा दें। – Groo

+0

मुझे कोशिश करते हैं और मेरे सवाल के प्रश्नों सभी ब्राउज़रों - एफएफ, IE और क्रोम context.Response.AppendHeader ("सामग्री-विन्यास", @ "लगाव; फ़ाइल नाम =" + ((स्ट्रिंग) Path.GetFileName (downloadFilePath))); यह कोड कोड – user1466569