тип mime файла ics

Я пытаюсь загрузить файл ics на свой сайт. Он был экспортирован из iCal на Mac OSX. Я думал, что файлы ics имеют тип mime text/calendar, но по какой-то причине этот файл имеет тип Application/octet-stream. Это приводит к тому, что загрузка не проходит мои проверочные тесты. У кого-нибудь есть идеи, почему тип не то, что я ожидаю?!


person musoNic80    schedule 29.01.2010    source источник


Ответы (3)


Тип MIME определяется браузером, и, похоже, ваш браузер не знает правильный тип MIME для файла ics. Неважно, просто пропустите проверку MIME и проведите структурный анализ (есть ли правильный заголовок, присутствуют ли какие-либо записи календаря и т. д.).

Тип MIME в любом случае имеет очень ограниченное применение для проверки, поскольку клиент может свободно изменять его.

person Pekka    schedule 29.01.2010
comment
чувак, ты только что сказал, что это определяется браузером, но может быть свободно изменено клиентом - что это? - person jckdnk111; 29.01.2010
comment
Спасибо за это. Я, конечно, буду использовать другой процесс проверки. Тем не менее, я все еще немного смущен. Если я открою файл прямо в окне браузера, он правильно отобразит содержимое. - person musoNic80; 29.01.2010
comment
@jckdnk: это определяется браузером (= клиентом). Он может быть подделан (=свободно изменен) злоумышленником, имитирующим браузер. Что тебе непонятно? - person Pekka; 29.01.2010
comment
@ musoNic80: Может быть, это потому, что он использует расширение файла для определения типа? - person Pekka; 29.01.2010
comment
Ручное определение типа mime с помощью регулярных выражений и т. д. очень дорого. Существует более старая, устаревшая функция для проверки типов MIME (mime_content_type), которая была заменена пакетом PECL, который работает намного быстрее. Это следует использовать, а не ручную проверку. - person Andrew Sledge; 29.01.2010
comment
@Пекка Ты мне скажи!!! Я думаю, что лучше проверить расширение файла и детали в содержании, как вы предложили ранее. Есть ли какие-либо другие проверки, которые я мог бы сделать, чтобы убедиться, что файл безопасен, прежде чем я открою его, чтобы проверить содержимое? - person musoNic80; 29.01.2010
comment
Что за файл ics? на основе XML? Если это так, я не думаю, что что-то может пойти не так, даже если кто-то попытается загрузить вредоносный файл: XML просто не будет отображаться. - person Pekka; 29.01.2010
comment
@Pekka: я пропустил, что он / она загружал и, следовательно, был клиентом / а не сервером. Это было мое недоразумение. - person jckdnk111; 30.01.2010

Попробуйте добавить в заголовок тип контента text/calendar. Если вы просто загружаете его из Apache, вы можете найти инструкции здесь: http://httpd.apache.org/docs/1.3/mod/mod_mime.html

person jckdnk111    schedule 29.01.2010
comment
Он пытается загрузить файл ics. - person Pekka; 29.01.2010
comment
По иронии судьбы, этот ответ полезен для таких людей, как я, которые погуглили неправильный термин, но получили правильный ответ из-за своего предположения. +1 - person QuickDanger; 05.03.2016
comment
Спасибо! Добавление header("content-type:text/calendar"); сработало для меня. Ваше здоровье. - person RockwoodON; 27.07.2017

Я добавлю свои два цента. Браузеры обычно просматривают заголовки, которые сервер отправляет им, чтобы определить тип MIME. Если сервер не отправляет тип MIME, хорошие браузеры догадываются, все IE обычно этого не делают. Ссылка на документы Apache выше, опубликованная jckdnk111, является хорошим ресурсом.

person Abraham Sewill    schedule 06.06.2012