প্রতিক্রিয়া সামগ্রী CSV হিসাবে প্রকার


328

আমাকে HTTP প্রতিক্রিয়াতে একটি CSV ফাইল পাঠাতে হবে। আমি কীভাবে সিএসভি ফর্ম্যাট হিসাবে আউটপুট প্রতিক্রিয়া সেট করতে পারি?

এটি কাজ করছে না:

Response.ContentType = "application/CSV";

উত্তর:


491

ব্যবহার text/csvকরা সবচেয়ে উপযুক্ত টাইপ।

Content-Dispositionপ্রতিক্রিয়াতে আপনার একটি শিরোনাম যুক্ত করার বিষয়টিও বিবেচনা করা উচিত । ইন্টারনেট এক্সপ্লোরার দ্বারা প্রায়শই কোনও পাঠ্য / সিএসভি সরাসরি এক্সেলের হোস্ট করা ইভেন্টে লোড করা হবে। এটি পছন্দসই ফলাফল হতে পারে বা নাও পারে।

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

উপরের ফলে একটি ফাইল "সংরক্ষণ করুন" ডায়ালগ দেখা দেবে যা আপনার ইচ্ছার কারণ হতে পারে।


2
আমি এই স্ট্রিংটি তৈরির জন্য একটি System.Net.Mime.ContentDisposition অবজেক্ট ব্যবহার করতে চাই।
রনি ওভারবি


62

text/csvসামগ্রীর ধরণ হিসাবে ব্যবহার করুন ।


48

বছরের পর বছর ধরে আমি এর জন্য একটি নিখুঁত শীর্ষ শিরোনাম দিচ্ছি যা আমি জানি সমস্ত ব্রাউজারগুলিতে দুর্দান্তভাবে কাজ করে

// 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");

7
আপনি যদি অ্যাপ্লিকেশন / vnd.ms- এক্সেল ব্যবহার করেন। ওএসএক্স সাফারিটিতে একটি ".xls" ফাইলের এক্সটেনশন যুক্ত হয়
লূক স্মিথ

28

এই মাইম-প্রকারগুলির মধ্যে একটির চেষ্টা করুন (এখান থেকে: http://filext.com/file-extension/CSV )

  • টেক্সট / কমা-সেপারেটেড-মান
  • টেক্সট / CSV
  • আবেদন / CSV
  • আবেদন / এক্সেল
  • আবেদন / vnd.ms-সীমা অতিক্রম করা
  • আবেদন / vnd.msexcel

এছাড়াও, মাইম-টাইপটি কেস সংবেদনশীল হতে পারে ...


text/csvআমার জন্য কাজ করেছেন
divine

15

ঠিক যেমন ব্যবহার করুন

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

ক্লায়েন্ট ফায়ারফক্স যখন ফাইলের নাম ডাবল উদ্ধৃতিতে আবদ্ধ করা আমার জন্য এটি স্থির করে।
গ্রাহাম

1
আপনি যদি এটি কোনও এমভিসি নিয়ামক ব্যবহার করে থাকেন return new EmptyResult()তবে ফাইল নামটি আটকে রাখার জন্য আপনাকে নিয়ন্ত্রণকারী পদ্ধতিটি শেষ করতে হবে। অন্যথায় আইই চেষ্টা করে ফাইলটিকে সেভ করে রাখবে ActionName.htm
ডিভে

5

ASP.net এমভিসিতে আপনি একটি FileContentResultএবং Fileপদ্ধতিটি ব্যবহার করতে পারেন :

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

3

আমি দেখতে পেয়েছি যে আইইয়ের সাথে সমস্যাটি হ'ল এটি রিটার্নের ডেটাগুলি স্নিগ্ধ করে এবং কী বিষয়বস্তুতে এটি প্রেরণ করা হয়েছে তা কী মনে করে তা সম্পর্কে নিজের মন তৈরি করে। এর ফলে অনেকগুলি পার্শ্ব প্রতিক্রিয়া রয়েছে যার কারণ হ'ল পাঠ্য ফাইলগুলির জন্য সর্বদা একটি সেভএ ডায়ালগ খোলা কারণ আপনি ডেটা ট্রান্সফায়ারগুলির সংকোচন ব্যবহার করছেন। সমাধানটি হল (পিএইচপি কোডে) ......

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

2

উপরে বর্ণিত হিসাবে বিষয়বস্তুর ধরণ এবং বিষয়বস্তু নির্ধারণের ফলে বিভিন্ন ব্রাউজারগুলির সাথে বুনোভাবে পরিবর্তিত ফলাফল পাওয়া যায়:

আইই 8: পছন্দ অনুসারে SaveAs ডায়ালগ এবং ডিফল্ট অ্যাপ্লিকেশন হিসাবে এক্সেল। 100% ভাল।

ফায়ারফক্স: সেভএস ডায়ালগটি প্রদর্শিত হবে, তবে ফায়ারফক্সের কোনও স্প্রেডশিট নেই ধারণা করে। এটি ভিজ্যুয়াল স্টুডিও দিয়ে খোলার পরামর্শ দেয়! 50% ভাল

ক্রোম: ইঙ্গিতগুলি সম্পূর্ণ উপেক্ষা করা হয়। ব্রাউজারে সিএসভি ডেটা প্রদর্শিত হয়। 0% ভাল।

অবশ্যই এই সমস্ত ক্ষেত্রে আমি মাইম / অ্যাপ্লিকেশন ম্যাপিংয়ের কোনও অনুকূলিতকরণ না করেই ব্রাউজারগুলি বাক্স থেকে বেরিয়ে আসার সাথে সাথে উল্লেখ করছি।


যদি ফায়ারফক্স আপনাকে ভিজ্যুয়াল স্টুডিওতে খুলতে চায়, এর অর্থ আপনি কোনও সিএসভি নয় এইচটিএমএল রফতানি করছেন।
মার্টিন

এটি ২০১৪-তে ঘটেছিল বলে মনে হয় না, আমার জন্য এটি সবার ক্ষেত্রে এটি দুর্দান্ত ছিল।
মাইককুলস

দয়া করে "উপরে বর্ণিত হিসাবে" সংজ্ঞা দিন
xhienne

2

আমি 'myfilename.cvs' এর সামনে একটি '/' অক্ষর সন্নিবেশ করার পরামর্শ দিচ্ছি

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

আমি আশা করি আপনি আরও ভাল ফলাফল পাবেন।


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.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.