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




http csv (10)

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

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

Response.ContentType = "application/CSV";

Answers

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

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

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

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

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


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


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

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

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


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

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

मैं 'myfilename.cvs' के सामने एक '/' वर्ण डालने का सुझाव देता हूं

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

मुझे आशा है कि आपको बेहतर परिणाम मिलेंगे।


एएसपीनेट एमवीसी में, आप एक FileContentResult और File विधि का उपयोग कर सकते हैं:

public FileContentResult DownloadManifest() {
    byte[] csvData = getCsvData();
    return File(csvData, "text/csv", "filename.csv");
}

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

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

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

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

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

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


सी # एमवीसी 4.5 के लिए आपको ऐसा करने की ज़रूरत है:

Response.Clear();
Response.ContentType = "application/CSV";
Response.AddHeader("content-disposition", "attachment; filename=\"" + fileName + ".csv\"");
Response.Write(dataNeedToPrint);
Response.End();
return new EmptyResult();  //this line is important else it will not work.

शुरुआत में मुझे इस article गुमराह किया गया था जो HttpClient पक्ष HttpClient

बाद में मुझे एहसास हुआ कि HttpURLConnection इस article से बने रहने जा रहा है

Google ब्लॉग के अनुसार :

अपाचे HTTP क्लाइंट में एक्लेयर और फियोयो पर कम कीड़े हैं। इन रिलीज के लिए यह सबसे अच्छा विकल्प है। जिंजरब्रेड के लिए, HttpURLConnection सबसे अच्छा विकल्प है। इसका सरल एपीआई और छोटा आकार एंड्रॉइड के लिए यह बहुत अच्छा बनाता है।

पारदर्शी संपीड़न और प्रतिक्रिया कैशिंग नेटवर्क उपयोग को कम करने, गति में सुधार और बैटरी बचाने के लिए। नए अनुप्रयोगों को HttpURLConnection का उपयोग करना चाहिए; यह वह जगह है जहां हम अपनी ऊर्जा आगे बढ़ेंगे।

प्रवाह rapidvaluesolutions.com/tech_blog/… और कुछ अन्य ढेर को पढ़ने के बाद, मुझे आश्वस्त है कि HttpURLConnection लंबे समय तक रहने के लिए जा रहा है।

HttpURLConnections के पक्ष में कुछ एसई प्रश्न:

एंड्रॉइड पर, UrlEncodedFormEntity का उपयोग किए बिना यूआरएल एनकोडेड फॉर्म डेटा के साथ एक POST अनुरोध करें

एचटीपीपोस्ट जावा प्रोजेक्ट में काम करता है, एंड्रॉइड में नहीं





asp.net http csv