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は5バイトで始まる
00 01 00 00 00
(つまり 00 01 00 00
GDEFテーブルバージョンから および先頭の00
GlyphClassDefテーブルオフセットから)
ファイルがこれらの5バイトで始まる場合、それはおそらくTTFです。
2017年2月現在、 RFC 8081 はfont/*メディアタイプを追加します。これは IANAメディアタイプ リストにもリストされています。 font/ttf
はこのリストにあります。ブラウザが追いつくのに時間がかかる場合があります。
私はこれがかなり古いことを知っていますが、まだ具体的な修正例を提供した人はいないようです。それで、私たちは未来の世代のためにあります:
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
私は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タイプでコメントしてください.
これを試すことができます:
application/font-sfnt
Ianaでわかるように、TTFの正しいヘッダーは次のとおりです。 http://www.iana.org/assignments/media-types/application/font-sfnt