2009-03-16 14 views
6

PHPでファイルのMIMEタイプを検出する方法(PHP 5.2のほとんどのインストールで可能ですが、これまでも積極的に開発されています)を探しています。PHPでMIMEタイプを検出する

私はmime_content_type()メソッドとFileinfo拡張機能を認識していますが、mime_content_type()は信頼できず、推奨されておらず、Fileinfoは "標準" PHP(5.2)インストールには含まれていません。

他にもオプションがありますか?

答えて

5

このPEARパッケージを調べましたか?

http://pear.php.net/package/MIME_Type

+0

ありがとうございました。理想的ではありません。実際には、私がすでに言及した2つの方法、つまりすべてのシステム(Windows)で作業していないもう1つの方法を使用しようとしています。当面。 –

0

あなたは、MIMEタイプをそのように取得するには、ヘッダーを解析し、その後、あなたが実行しているWebサーバへサブリクエストを行うことができます。これは遅いので、curlを使用してヘッダーを取得するのは、完全な要求ではありません。大きなファイルを見ている場合は、これが重要です。

Apacheを実行し、phpをモジュールとして使用している場合は、VIRTUAL関数を見てください。カールを使うよりも、サブリクエストを行うのがより速い方法です。

それ以外の場合は、MIMEタイプを拡張子で検索できます。これにより、すべての名前の付いたファイルが機能します。

11

それは* nixのサーバの場合は、ファイルコマンドを使用することができます(笑残念私は私が仕上げたようこれがまあいい。ヶ月前に頼まれました。同様にこれを加えるかもしれない...実現)。

file -bi <filepath> 

PHPで「exec」を使用してください私はあなたがパス文字列をエスケープし、出力をフォーマットする必要がある場合がありますので、私はそれをテストしていない

$content_type = exec("file -bi " . escapeshellarg($filepath)); 

ので、これで私を引用していないPHPに新しいけど...ね。

他の方法よりも信頼性が高い場合は、Dunnoを使用してください。

+2

私はファイル-b --mime-type $ filenameを使用しますが、良い答えです! – icco

+0

ありがとう、ありがとう、ありがとう! – Kama

関連する問題