我需要在HTTP响应中发送一个CSV文件。如何将输出响应设置为CSV格式?

这是行不通的:

Response.ContentType = "application/CSV";

当前回答

在ASP.net MVC中,你可以使用FileContentResult和File方法:

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

其他回答

使用text/csv作为内容类型。

我发现IE的问题是,它嗅探返回数据,并对它认为已经发送的内容类型做出自己的判断。这导致了许多副作用,例如总是打开文本文件的saveAs对话框,因为您正在使用数据传输的压缩。解决方案是(在php代码中)......

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

在ASP.net MVC中,你可以使用FileContentResult和File方法:

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

我建议在'myfilename.cvs'前面插入一个'/'字符

Response.AddHeader("Content-Disposition", "attachment;filename=/myfilename.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");