Как использовать MIME-тип CSV?


125

В веб-приложении, над которым я работаю, пользователь может щелкнуть ссылку на файл CSV. Для mime-типа заголовок не установлен, поэтому браузер просто отображает его как текст. Я хотел бы, чтобы этот файл был отправлен в виде файла .csv, чтобы пользователь мог напрямую открыть его с помощью calc, excel, gnumeric и т. Д.

header('Content-Type: text/csv');
echo "cell 1, cell 2";

Этот код работает должным образом на моем компьютере (разве не так, как всегда?), Но не работает на другом компьютере.

Мой браузер - это ночная сборка FF 3.0.1 (в Linux). Браузеры, в которых он не работал, были IE 7 и FF 3.0 (в Windows)

Есть ли какие-то причуды, о которых я не подозреваю?

Ответы:


219

Вы можете попытаться заставить браузер открыть диалоговое окно «Сохранить как ...», выполнив следующие действия:

header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "cell 1, cell 2";

Что должно работать в большинстве основных браузеров.


12

Вы не указываете язык или структуру, но для загрузки файлов используется следующий заголовок:

"Content-Disposition: attachment; filename=abc.csv"

5

В Internet Explorer вам часто приходится указывать заголовок Pragma: public, чтобы загрузка работала правильно.

header('Pragma: public');

Только мои 2 цента ..


5
Прагма: public не имеет никакого значения для Internet Explorer. (Я работал над рассматриваемым компонентом, и я нашел источник).
EricLaw

Возможно, на самом деле это полезно для замены уже существующего заголовка Pragma: no-cache?
Doin

2

Этот код можно использовать для экспорта любого файла, включая csv

// application/octet-stream tells the browser not to try to interpret the file
header('Content-type: application/octet-stream');
header('Content-Length: ' . filesize($data));
header('Content-Disposition: attachment; filename="export.csv"');

2
«octetstream» означает «поток октетов»
EricLaw

2
Это может вызвать предупреждение в некоторых браузерах: ресурс интерпретируется как документ, но передается с использованием типа MIME application / octet-stream
mikeschuld
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.