asp.net - सीएसवी के रूप में प्रतिक्रिया सामग्री प्रकार




http csv (8)

इन अन्य माइम-प्रकारों में से किसी एक को आजमाएं (यहां से: http://filext.com/file-extension/CSV )

  • पाठ / अल्पविराम से अलग मान
  • पाठ / सीएसवी
  • आवेदन / सीएसवी
  • आवेदन / एक्सेल
  • आवेदन / vnd.ms-एक्सेल
  • आवेदन / vnd.msexcel

इसके अलावा, माइम-प्रकार केस संवेदनशील हो सकता है ...

मुझे HTTP प्रतिक्रिया में एक CSV फ़ाइल भेजने की आवश्यकता है। मैं आउटपुट प्रतिक्रिया को CSV प्रारूप के रूप में कैसे सेट कर सकता हूं?

ये काम नहीं कर रहा है:

Response.ContentType = "application/CSV";

ऊपर वर्णित सामग्री प्रकार और सामग्री स्वभाव को सेट करना विभिन्न ब्राउज़रों के साथ जंगली रूप से भिन्न परिणाम उत्पन्न करता है:

आईई 8: वांछित के रूप में SaveAs संवाद, और एक्सेल डिफ़ॉल्ट ऐप के रूप में। 100% अच्छा

फ़ायरफ़ॉक्स: SaveAs संवाद दिखाता है, लेकिन फ़ायरफ़ॉक्स को पता नहीं है कि यह एक स्प्रेडशीट है। विजुअल स्टूडियो के साथ इसे खोलने की इच्छा है! 50% अच्छा

क्रोम: संकेत पूरी तरह से अनदेखा कर रहे हैं। सीएसवी डेटा ब्राउज़र में दिखाया गया है। 0% अच्छा

बेशक इन सभी मामलों में मैं ब्राउज़र के बारे में बात कर रहा हूं क्योंकि वे बॉक्स से बाहर आते हैं, जिसमें माइम / एप्लिकेशन मैपिंग का कोई अनुकूलन नहीं है।


बस इस तरह प्रयोग करें

Response.Clear();
Response.ContentType = "application/CSV";
Response.AddHeader("content-disposition", "attachment; filename=\"" + filename + ".csv\"");
Response.Write(t.ToString());
Response.End();

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

header('X-Content-Type-Options: nosniff');

सामग्री प्रकार के रूप में text/csv प्रयोग करें।


सालों से मैं इस के लिए हेडर का एक आदर्श सेट मान रहा हूं जो कि उन सभी ब्राउज़रों में शानदार ढंग से काम करता है जिन्हें मैं जानता हूं

// these headers avoid IE problems when using https:
// see http://support.microsoft.com/kb/812935
header("Cache-Control: must-revalidate");
header("Pragma: must-revalidate");

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=$filename.csv");

आरएफसी 4180 के अनुसार सीएसवी का एमआईएमई प्रकार टेक्स्ट / सीएसवी है


text/csv का उपयोग सबसे उपयुक्त प्रकार है।

आपको प्रतिक्रिया में Content-Disposition शीर्षलेख जोड़ने पर भी विचार करना चाहिए। एक्सेल के मेजबान उदाहरण में अक्सर एक इंटरनेट एक्सप्लोरर द्वारा एक टेक्स्ट / सीएसवी लोड किया जाएगा। यह एक वांछनीय परिणाम हो सकता है या नहीं भी हो सकता है।

Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");

उपरोक्त एक फ़ाइल "इस रूप में सहेजें" संवाद का कारण बन जाएगा जो आपके इरादे से हो सकता है।







csv