web-dev-qa-db-ja.com

TTFファイルのMIMEタイプは何ですか?

TrueTypeフォントの正しいMIMEタイプが見つかりません。ファイルアップロードクラス(CodeIgniter)を使用してファイルをアップロードし、TTFのみのアップロードを許可するため、必要です。これを試しました:

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

成功なし。

何か案は ?

36
CappY

TTFにはMIMEタイプが割り当てられていません。より一般的なapplication/octet-streamを使用する必要があります。これは、MIMEタイプが割り当てられていないバイナリデータを示すために使用されます。

26
Ori

私は見た font/ttfおよびapplication/x-font-ttf TTFのMIMEタイプとして使用されます。ただし、ファイルがapplication/octet-streamそして、あなたは単純に.ttfファイル拡張子(または拡張子のないファイルを処理する場合)は、ファイルの内容をチェックして、それらがTTFファイルかどうかを確認する必要があります。 UNIX magicファイルには、 TTFは5バイトで始まる

00 01 00 00 00

(つまり 00 01 00 00 GDEFテーブルバージョンから および先頭の00 GlyphClassDefテーブルオフセットから)

ファイルがこれらの5バイトで始まる場合、それはおそらくTTFです。

17
dkarp

2017年2月現在、 RFC 8081 はfont/*メディアタイプを追加します。これは IANAメディアタイプ リストにもリストされています。 font/ttfはこのリストにあります。ブラウザが追いつくのに時間がかかる場合があります。

13
George Helyar

私はこれがかなり古いことを知っていますが、まだ具体的な修正例を提供した人はいないようです。それで、私たちは未来の世代のためにあります:

Apache2とChromeでも同じ問題がありました。 Chromeは、application/octet-streamのmime-typeで送信されたファイルが実際にフォントファイルであったことを警告します-それはそうでした。

私の修正は、Apache2の設定ファイルに次の行を追加することでした。

AddType application/x-font-ttf .ttf

pS:

マジックファイルを更新しようとしましたが、Apache2を完全にリロードした後、動作しませんでした。私が試したマッチ(フィールド間で実際のタブ文字を使用し、上記で参照したマジックパターンに従って)は以下のとおりです。

#True Typeフォント
 0 string\000\001\000\000\000 application/x-font-ttf 
 0 string\000\001\000\000\000 TrueTypeフォントデータmime application/x-font-ttf 
11

私はcodeigniterの経験はありませんが、正しいmimetypeは次のように思われる傾向があります。

application/x-font-ttf

これで問題が解決するかどうかわかりません

3
rene

デバッグする時間です!何かが機能しない場合、最良の選択肢はコードをクラックして開き、手を汚すことです。

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タイプでコメントしてください.

3
Phil Sturgeon

これを試すことができます:

application/font-sfnt

Ianaでわかるように、TTFの正しいヘッダーは次のとおりです。 http://www.iana.org/assignments/media-types/application/font-sfnt

3