আমাকে HTTP প্রতিক্রিয়াতে একটি CSV ফাইল পাঠাতে হবে। আমি কীভাবে সিএসভি ফর্ম্যাট হিসাবে আউটপুট প্রতিক্রিয়া সেট করতে পারি?
এটি কাজ করছে না:
Response.ContentType = "application/CSV";
আমাকে HTTP প্রতিক্রিয়াতে একটি CSV ফাইল পাঠাতে হবে। আমি কীভাবে সিএসভি ফর্ম্যাট হিসাবে আউটপুট প্রতিক্রিয়া সেট করতে পারি?
এটি কাজ করছে না:
Response.ContentType = "application/CSV";
উত্তর:
ব্যবহার text/csv
করা সবচেয়ে উপযুক্ত টাইপ।
Content-Disposition
প্রতিক্রিয়াতে আপনার একটি শিরোনাম যুক্ত করার বিষয়টিও বিবেচনা করা উচিত । ইন্টারনেট এক্সপ্লোরার দ্বারা প্রায়শই কোনও পাঠ্য / সিএসভি সরাসরি এক্সেলের হোস্ট করা ইভেন্টে লোড করা হবে। এটি পছন্দসই ফলাফল হতে পারে বা নাও পারে।
Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
উপরের ফলে একটি ফাইল "সংরক্ষণ করুন" ডায়ালগ দেখা দেবে যা আপনার ইচ্ছার কারণ হতে পারে।
মাইম টাইপ সিএসভি হ'ল আরএফসি 4180 অনুসারে পাঠ্য / সিএসভি ।
বছরের পর বছর ধরে আমি এর জন্য একটি নিখুঁত শীর্ষ শিরোনাম দিচ্ছি যা আমি জানি সমস্ত ব্রাউজারগুলিতে দুর্দান্তভাবে কাজ করে
// 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");
এই মাইম-প্রকারগুলির মধ্যে একটির চেষ্টা করুন (এখান থেকে: http://filext.com/file-extension/CSV )
এছাড়াও, মাইম-টাইপটি কেস সংবেদনশীল হতে পারে ...
text/csv
আমার জন্য কাজ করেছেন
ঠিক যেমন ব্যবহার করুন
Response.Clear();
Response.ContentType = "application/CSV";
Response.AddHeader("content-disposition", "attachment; filename=\"" + filename + ".csv\"");
Response.Write(t.ToString());
Response.End();
return new EmptyResult()
তবে ফাইল নামটি আটকে রাখার জন্য আপনাকে নিয়ন্ত্রণকারী পদ্ধতিটি শেষ করতে হবে। অন্যথায় আইই চেষ্টা করে ফাইলটিকে সেভ করে রাখবে ActionName.htm
।
আমি দেখতে পেয়েছি যে আইইয়ের সাথে সমস্যাটি হ'ল এটি রিটার্নের ডেটাগুলি স্নিগ্ধ করে এবং কী বিষয়বস্তুতে এটি প্রেরণ করা হয়েছে তা কী মনে করে তা সম্পর্কে নিজের মন তৈরি করে। এর ফলে অনেকগুলি পার্শ্ব প্রতিক্রিয়া রয়েছে যার কারণ হ'ল পাঠ্য ফাইলগুলির জন্য সর্বদা একটি সেভএ ডায়ালগ খোলা কারণ আপনি ডেটা ট্রান্সফায়ারগুলির সংকোচন ব্যবহার করছেন। সমাধানটি হল (পিএইচপি কোডে) ......
header('X-Content-Type-Options: nosniff');
উপরে বর্ণিত হিসাবে বিষয়বস্তুর ধরণ এবং বিষয়বস্তু নির্ধারণের ফলে বিভিন্ন ব্রাউজারগুলির সাথে বুনোভাবে পরিবর্তিত ফলাফল পাওয়া যায়:
আইই 8: পছন্দ অনুসারে SaveAs ডায়ালগ এবং ডিফল্ট অ্যাপ্লিকেশন হিসাবে এক্সেল। 100% ভাল।
ফায়ারফক্স: সেভএস ডায়ালগটি প্রদর্শিত হবে, তবে ফায়ারফক্সের কোনও স্প্রেডশিট নেই ধারণা করে। এটি ভিজ্যুয়াল স্টুডিও দিয়ে খোলার পরামর্শ দেয়! 50% ভাল
ক্রোম: ইঙ্গিতগুলি সম্পূর্ণ উপেক্ষা করা হয়। ব্রাউজারে সিএসভি ডেটা প্রদর্শিত হয়। 0% ভাল।
অবশ্যই এই সমস্ত ক্ষেত্রে আমি মাইম / অ্যাপ্লিকেশন ম্যাপিংয়ের কোনও অনুকূলিতকরণ না করেই ব্রাউজারগুলি বাক্স থেকে বেরিয়ে আসার সাথে সাথে উল্লেখ করছি।
সি # এমভিসি 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.