我找不到TrueType字体的正确MIME类型。我需要它,因为我正在使用文件上传类(CodeIgniter)来上传文件,我想只允许上传TTF。试过这个:
'ttf' => 'font/ttf'
'ttf' => 'font/truetype'
没有成功。
有任何想法吗 ?
TTF没有分配MIME类型。您将不得不使用更通用的application/octet-stream
,它用于指示没有指定MIME类型的二进制数据。
我见过font/ttf
和application/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。
截至2017年2月,RFC 8081添加了字体/ *媒体类型,这些类型也列在IANA Media Types列表中。 font/ttf
在此列表中。浏览器可能需要一些时间才能赶上。
我知道这已经很老了,但似乎没有人提供具体的例子修复。所以这里我们是为了后代:
我遇到了与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
我没有使用codeigniter的经验,但我倾向于认为正确的mimetype是:
application/x-font-ttf
我不确定这是否能解决你的问题
是时候做一些调试了!如果某些东西不起作用,最好的选择是破解代码并弄脏你的手。
打开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,以确保没有其他人被卡住。
你能试试这个:
application/font-sfnt
正如我在iana中看到的,对于TTF,正确的标题是:http://www.iana.org/assignments/media-types/application/font-sfnt
现在有一个ttf和otf的媒体类型。
见:https://www.iana.org/assignments/media-types/media-types.xml#font
ttf是font / ttf
otf是font / otf
woff是font / woff
和woff2是font / woff2