PHP でファイルの MIME タイプを検出するための最良の (ほとんどの PHP 5.2 インストールで可能であり、現在も積極的に開発されている) 方法を探しています。
私はmime_content_type()
メソッドと Fileinfo 拡張機能を認識mime_content_type()
していますが、信頼性が低く、非推奨であり、Fileinfo は「標準」の PHP (5.2) インストールには含まれていません。
他に選択肢はありますか?
PHP でファイルの MIME タイプを検出するための最良の (ほとんどの PHP 5.2 インストールで可能であり、現在も積極的に開発されている) 方法を探しています。
私はmime_content_type()
メソッドと Fileinfo 拡張機能を認識mime_content_type()
していますが、信頼性が低く、非推奨であり、Fileinfo は「標準」の PHP (5.2) インストールには含まれていません。
他に選択肢はありますか?
(笑申し訳ありませんが、これは数か月前に仕上げをしているときに尋ねられたことに気づきました。まあ、これを追加したほうがいいかもしれません...)
* nixサーバーの場合は、fileコマンドを使用できます。
file -bi <filepath>
私が推測することを行うには、PHPで「exec」を使用する必要がありますか?私はPHPを初めて使用するので、これについて引用しないでください...
$content_type = exec("file -bi " . escapeshellarg($filepath));
私はそれをテストしなかったので、パス文字列をエスケープして出力をフォーマットする必要があるかもしれません。
これが他の方法よりも信頼できるかどうかはわかりません。
この PEAR パッケージを調べましたか?
実行中の Web サーバーにサブリクエストを送信し、ヘッダーを解析してその方法で MIME タイプを取得できます。これは遅いため、curl を使用して完全なリクエストではなくヘッダーのみを取得してください。これは、大きなファイルを見ている場合に重要です。
Apache を実行していて、モジュールとして php を使用している場合は、VIRTUAL 関数を見てください。これは、curl を使用するよりもサブリクエストを行うための高速な方法です。
それ以外の場合は、拡張子で MIME タイプを検索できます。これにより、すべての適切な名前のファイルが機能します。