2016-07-07 12 views
0

保存されたファイルの拡張子を特定する最も効率的な方法は何ですか。保存された画像(または任意のファイル)のファイル拡張子を決定する

有効なタイプ/拡張子は、たとえば、.jpgの.pngをと

.gifメモされ、すべての項目は、イメージを持っているので、画像の名前は、私がそう考えることができる唯一の方法 item1.jpg or item1.png or item1.gif item2.jpg or item2.png or item2.gif etc.

になります遠くには3つの可能性があります。

if(file_exists('item1.jpg')) {... 
} elseif(file_exists('item1.png')) {... 
} elseif(file_exists('item1.gif')) {... 
} 

もっと効率的なやり方はありますか?

+0

はい、アイテムはdb駆動型の記事so/page/item23 /に関連付けられたイメージimg src = "/ images/item23.jpg"を持ちます。私は "/ images/item23"の部分を知っていますが、それは3つのファイルタイプのいずれかになります。私は記事の内容と一緒に画像の名前を格納することができますが、これは不必要なオーバーヘッドかもしれないと思っています。 – vendo

答えて

0

を与える必要があります

mime_content_typeを試してみてください

$name = 'item23'; 
$images = glob("images/$name.???"); 
$image = $images ? $images[0] : ''; 

最初を返すべきどのファイル拡張子に関係なくファイル名に一致するファイル、または一致するファイルが見つからない場合は''です。 I と考えると、file_existsを3回チェックするよりも実行時間の点で効率的であるはずです。


私の迷惑な意見では、あなたの記事に関連する画像への完全なパスを保存することは悪い考えではないと思います。

+0

ありがとう、これは私が探していたラインに沿っています。私はそれが最も効率的な方法がわかりませんが、それが動作するかどうかは分かりません:)完全なファイル名を格納するという点では、ほとんどの場合、型は.jpgになりますので、すべてのインスタンスではなく例外を処理するものが必要です。あなたの方法は最良の解決策であるようです。 (例えば、0 => 'jpg'、1 => 'png'、2 => 'gif'など、小さなintとしてextを格納することも考えています。よろしく。 – vendo

1

これは、あなたができるファイルのMIMEをチェックして、以下のコードの面で効率的にするためにあなたのタイプ

+0

ありがとう、しかし、私は最初にファイル名+拡張子を知る必要があります:) – vendo

関連する問題