Какой тип MIME для файлов TTF? - PullRequest
       15

Какой тип MIME для файлов TTF?

36 голосов
/ 26 февраля 2011

Я не могу найти правильный тип MIME для шрифтов TrueType. Мне это нужно, потому что я использую File Uploading Class (CodeIgniter) для загрузки файлов и хочу разрешить загрузку только TTF. Пробовал это:

'ttf'   =>  'font/ttf'
'ttf'   =>  'font/truetype'

Безуспешно.

Есть идеи?

Ответы [ 8 ]

26 голосов
/ 26 февраля 2011

TTF не назначен тип MIME.Вам придется использовать более общий application/octet-stream, который используется для указания двоичных данных без назначенного типа MIME.

17 голосов
/ 27 февраля 2011

Я видел font/ttf и application/x-font-ttf, используемые в качестве типов MIME для TTF. Но если ваши файлы загружаются как application/octet-stream и вы не хотите просто доверять расширению файла .ttf (или если вы хотите обрабатывать файлы без расширения), вам придется проверить содержимое файла, чтобы увидеть являются ли они файлами TTF. В файле UNIX magic указано, что TTF начинается с 5 байтов

00 01 00 00 00

(Это 00 01 00 00 от версии таблицы GDEF и ведущее 00 от смещения таблицы GlyphClassDef.)

Если ваш файл начинается с этих 5 байтов, это, вероятно, TTF.

13 голосов
/ 31 марта 2017

По состоянию на февраль 2017 года, RFC 8081 добавляет шрифты / * типы носителей, которые также перечислены в списке IANA Media Types . font/ttf находится в этом списке. Браузерам может потребоваться некоторое время, чтобы наверстать упущенное.

11 голосов
/ 06 сентября 2012

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

У меня была такая же проблема с Apache2 и Chrome. Chrome предупреждает, что файл, отправленный с помощью mime-типа application / octet-stream, на самом деле является файлом шрифта.

Исправление для меня заключалось в добавлении следующей строки в мой файл конфигурации apache2:

<b>AddType application/x-font-ttf .ttf</b>

пс:

Я пытался обновить волшебный файл, но он не работал после полной перезагрузки apache2. Совпадения, которые я пробовал (используя реальные символы табуляции между полями и согласно указанным выше магическим образцам), приведены ниже:

  # True Type fonts
  0 string  \000\001\000\000\000  application/x-font-ttf
  0 string  \000\001\000\000\000  TrueType font data mime  application/x-font-ttf
3 голосов
/ 12 июля 2016

Можете ли вы попробовать это:

application/font-sfnt

Как я вижу в iana, правильный заголовок такой для TTF: http://www.iana.org/assignments/media-types/application/font-sfnt

3 голосов
/ 26 февраля 2011

Время сделать отладку! Если что-то не работает, лучше всего взломать код и испачкать руки.

Откройте библиотеку Uploads (system / library / Upload.php) и найдите этот фрагмент кода в строке 200:

    // Set the uploaded data as class variables
    $this->file_temp = $_FILES[$field]['tmp_name'];
    $this->file_size = $_FILES[$field]['size'];
    $this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']);
    $this->file_type = strtolower(trim(stripslashes($this->file_type), '"'));
    $this->file_name = $this->_prep_filename($_FILES[$field]['name']);
    $this->file_ext  = $this->get_extension($this->file_name);
    $this->client_name = $this->file_name;

Вы увидите, что там устанавливается $ this-> file_type. var_dump () это и посмотреть, что он содержит.

Скорее всего, у вас есть какой-то неясный MIME-тип, о котором CodeIgniter не знает. Поместите этот MIME-тип в config / mimes.php, и он должен работать нормально.

Если он работает и вы принимаете этот ответ, пожалуйста, прокомментируйте используемый вами тип MIME, и я добавлю его в CodeIgniter Reactor, чтобы никто не застрял.

3 голосов
/ 26 февраля 2011

У меня нет опыта работы с codeigniter, но я склонен полагать, что правильный mimetype:

application/x-font-ttf

Я не уверен, решит ли это вашу проблему

0 голосов
/ 13 февраля 2019

Теперь существует тип носителя для ttf и otf.

См .: https://www.iana.org/assignments/media-types/media-types.xml#font

ttf is font / ttf

otf is font / otf

woff is font / woff

и woff2 это шрифт / woff2

...