При поиске с помощью Google я нашел два различных набора заголовков, которые должны быть установлены при выводе Excel, сгенерированного в другом формате файла.
для, например.
Для Типа "Excel5" заголовки:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=$filename");
header("Content-Transfer-Encoding: binary ");
Для Типа "Excel2007" заголовки:
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="myfile.xlsx"');
header('Cache-Control: max-age=0');
Мой вопрос: там нужно, должен настроить различные заголовки для каждого типа файла, поскольку существуют другие типы файлов также CSV, HTML и PDF?
header("Pragma: public");
Нет - это просто неправильно - хотя многие люди думают, что это как-то связано с кешированием
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
Ничего общего с Excel - они просто управляют кешированием
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
Нет - должен быть только заголовок типа содержимого. Для файла MS Excel, использующего OLE, тип mime должен быть application / vnd.ms-excel
. Только второй заголовок выше является допустимым типом mime.
header("Content-Disposition: attachment;filename=$filename");
header("Content-Transfer-Encoding: binary ");
Второй заголовок является избыточным, первый указывает имя файла для загрузки.
Content-Type: application / vnd.openxmlformats-officedocument.spreadsheetml.sheet ');
Только для файла .xlsx (т. Е. Сохраненного в XML). В противном случае вам следует использовать application / vnd.ms-excel. Действительно, последний должен быть обратно совместимым.
Мой вопрос: нужно ли настраивать разные заголовки для каждого типа файла
Да - заголовок Content-Type является типом файла. Но нужно изменить только этот заголовок.
С.