Тип ответа в виде CSV

Мне нужно отправить CSV файл в ответ HTTP. Как установить выходной ответ в формате CSV?

Это не работает:

Response.ContentType = "application/CSV";
+275
26 дек. '08 в 9:32
источник поделиться
10 ответов

Использование text/csv - наиболее подходящий тип.

Вы также должны рассмотреть возможность добавления заголовка Content-Disposition в ответ. Часто текст /csv загружается Internet Explorer непосредственно в размещенный экземпляр Excel. Это может быть или не быть желательным результатом.

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

Приведенное выше приведет к появлению диалогового окна "Сохранить как", которое может быть тем, что вы намерены.

+405
26 дек. '08 в 11:26
источник

Связанные вопросы


Похожие вопросы

MIME-тип CSV - это текст /csv в соответствии с RFC 4180.

+112
16 мар. '09 в 18:47
источник

На протяжении многих лет я оттачивал идеальный набор заголовков для этого, который блестяще работает во всех браузерах, которые я знаю о

// 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");
+46
12 нояб. '09 в 1:11
источник

В качестве типа содержимого используйте text/csv.

+45
26 дек. '08 в 9:36
источник

Попробуйте использовать один из этих других типов mime (отсюда: http://filext.com/file-extension/CSV)

  • текст/разделенный запятыми-значение
  • текст /CSV
  • приложение /CSV
  • приложение/первенствует
  • приложение/vnd.ms-первенствует
  • приложение /vnd.msexcel

Кроме того, тип mime может быть чувствителен к регистру...

+23
26 дек. '08 в 9:37
источник

Просто используйте это

Response.Clear();
Response.ContentType = "application/CSV";
Response.AddHeader("content-disposition", "attachment; filename=\"" + filename + ".csv\"");
Response.Write(t.ToString());
Response.End();
+14
28 апр. '09 в 12:54
источник

В ASP.net MVC вы можете использовать метод FileContentResult и File:

public FileContentResult DownloadManifest() {
    byte[] csvData = getCsvData();
    return File(csvData, "text/csv", "filename.csv");
}
+5
25 июл. '13 в 11:35
источник

Настройка типа контента и расположения контента, как описано выше, дает разные результаты в разных браузерах:

IE8: диалог SaveAs, а Excel - как приложение по умолчанию. 100% хорошо.

Firefox: диалог SaveAs отображается, но Firefox не имеет представления, что это электронная таблица. Предлагает открыть его с помощью Visual Studio! 50% хороших

Chrome: подсказки полностью игнорируются. Данные CSV отображаются в браузере. 0% хорошо.

Конечно, во всех этих случаях я имею в виду браузеры, когда они выходят из них, без настройки сопоставлений mime/application.

+2
28 апр. '09 в 1:39
источник

Я обнаружил, что проблема с IE заключается в том, что она обнюхивает возвращаемые данные и сама думает о том, какой тип контента он считает отправленным. Есть ряд побочных эффектов, которые это вызывает, например, всегда открывать диалог saveAs для текстовых файлов, потому что вы используете сжатие данных trasnferes. Решение (в php-коде)...

header('X-Content-Type-Options: nosniff');
+2
16 февр. '12 в 12:20
источник

Я предлагаю вставить символ '/' перед 'myfilename.cvs'

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

Надеюсь, вы получите лучшие результаты.

+2
13 июн. '11 в 21:59
источник

Посмотрите другие вопросы по меткам или Задайте вопрос