2013-05-12 6 views
7

私はPHPドキュメントをしばらく見てきましたが、MIMEタイプ拡張をファイルタイプ拡張に変換する方法が見つかりませんでした。MIMEタイプをファイルに変換します。拡張PHP

image_type_to_extension 

ファイルが画像の場合は動作するようです。私の特定のケースでは、MIMEタイプはイメージ用ではなく、フォントタイプ用です: 'otf、ttf'。

function getExtension ($mime_type){ 

    $extensions = array('image/jpeg' => 'jpeg', 
         'text/xml' => 'xml' 
         ); 

    // Add as many other Mime Types/File Extensions as you like 

    return $extensions[$mime_type]; 

} 

注:

+0

すべてのMIMEタイプに固定ファイル拡張子が付いているわけではありません。システムが処理する可能性のあるすべてのMIMEタイプに対してファイル拡張子を持つ配列を作成したい –

+0

OTFフォントの標準MIMEタイプはありません –

+0

もちろんです: 'application/x-font-otf' –

答えて

16

次のようなものを使用することなく、すべてのMIMEタイプが固定されたファイルの拡張子を持っています。また、application/octet-streamのようなMIMEタイプは、複数のファイル拡張子を参照することができます。

+0

ありがとうあなたは、オクテットストリームが複数のファイル拡張子を参照していることを知らなかった。おそらく、ファイル名を送信する方法を見つけるべきですが、今はdataURLをblobに変換するため "blob"ですが、ファイル名を変更することはできますが、firefoxでは動作しません:http://stackoverflow.com/questions/8495301/change-filename-in-blobbuilder-to-be-passed-as-formdata-on-xhr – TaylorMac

+11

あなたがこのルートに行くことを決めたら、あなたを始めようとするための網羅的なリストを以下に示します:https://github.com /EllisLab/CodeIgniter/blob/develop/application/config/mimes.php – xbonez

+0

私のように遅くに到着する人のために、ここでは仕事をする専用ライブラリがあります:https://github.com/dflydev/dflydev-apache-mime -typees – Romain

-2

このファイルが常に正しいファイル拡張子を返すかどうかはわかりませんが、pathinfo()を使用すると、mime_typesを変換する代わりにファイル名から拡張子を取得できます。

$Extension = pathinfo(basename($_FILES['image']['name']), PATHINFO_EXTENSION); 

echo $Extension; 
6

最初にイメージの$ mimeタイプを取得し、文字列を '/'で爆発させて配列を返します。

$extension = explode('/', $mime)[1]; 
+0

このソリューションがうまくいくかどうかは疑問でした。しかし、MIMEタイプは常に2つの部分が "/"で区切られているので、それはできます。それを証明するMIMEタイプの完全なリストhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types – BoCyrill

+0

はい、MIMEタイプの特定のセットを入れるのではなく、単純にこのようにする... –

関連する問題