TTF文件的MIME类型是什么?

时间:2011-02-26 16:18:52

标签: fonts upload mime

我找不到TrueType字体的正确MIME类型。我需要它,因为我正在使用文件上传类(CodeIgniter)来上传文件,我想只允许上传TTF。试过这个:

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

没有成功。

有什么想法吗?

8 个答案:

答案 0 :(得分:26)

TTF没有分配MIME类型。您将不得不使用更通用的application/octet-stream,它用于指示没有指定MIME类型的二进制数据。

答案 1 :(得分:15)

我看到font/ttfapplication/x-font-ttf用作TTF的MIME类型。但是,如果您的文件被上传为application/octet-stream并且您不想仅仅信任.ttf文件扩展名(或者如果您想要处理没有扩展名的文件),则必须检查文件内容以查看它们是否是TTF文件。 UNIX magic文件表示TTF will begin with the 5 bytes

00 01 00 00 00

(那是00 01 00 00 from the GDEF table version和GlyphClassDef表偏移的前导00。)

如果您的文件以这5个字节开头,则可能是TTF。

答案 2 :(得分:12)

截至2017年2月,RFC 8081添加了字体/ *媒体类型,这些类型也列在IANA Media Types列表中。 font/ttf在此列表中。浏览器可能需要一些时间才能赶上。

答案 3 :(得分:11)

我知道这已经很老了,但似乎没有人提供具体的示例修复。所以我们这里是为了后代:

我遇到了与Apache2和Chrome相同的问题。 Chrome会警告使用mime类型的application / octet-stream发送的文件实际上是一个字体文件 - 就是这样。

我的修复是在我的apache2配置文件中添加以下行:

AddType application/x-font-ttf .ttf

PS:

我曾尝试更新魔法文件,但在完整的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

答案 4 :(得分:3)

我没有使用codeigniter的经验,但我倾向于认为正确的mimetype是:

application/x-font-ttf

我不确定这是否能解决您的问题

答案 5 :(得分:3)

是时候做一些调试了!如果某些东西不起作用,最好的选择是破解代码并弄清楚。

打开Uploads库(system / libraries / 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(),看看它包含什么。

你可能有一些CodeIgniter不知道的模糊MIME类型。将该MIME类型放入config / mimes.php中它应该可以正常工作。

如果你有工作并接受这个答案,请使用您使用的MIME类型进行评论,我会将其添加到CodeIgniter Reactor,以确保没有其他人卡住。

答案 6 :(得分:3)

你可以试试这个:

<table>
    <tr ng-repeat="draw in dataItem.AWTR_DRAWING">
        <!--this will contain {key : {object structure}, value : ""} -->
        <td ng-repeat="(key, value2) in draw.key" ng-bind="key"></td>
        <!--this will contains key = "ITEM_NUMBER|PLANT|PLANT_EMAIL"-->              
    </tr>
</table>

正如我在iana中看到的,TTF的正确标题是: http://www.iana.org/assignments/media-types/application/font-sfnt

答案 7 :(得分:-1)

现在有ttf和otf的媒体类型。

请参阅:https://www.iana.org/assignments/media-types/media-types.xml#font

ttf是字体/ ttf

otf是字体/ otf

woff是字体/ woff

woff2是font / woff2