2012-01-05 4 views
1

私は、外部の画像の拡張子を検出するために、以下を使用しています:)(パス情報を使用して画像に本当の拡張子を見つける

 $url = (POST_IMAGESELECTOR); 
     $path_parts = pathinfo($url); 
     $extension = $path_parts['extension']; 

すべての画像は、様々な外部ソースから来ます。上記のサンプルは80%の時間で動作しますが、従来の拡張子を付けずに画像を表示すると失敗します。たとえば、次の画像があります。

http://media.kohls.com.edgesuite.net/is/image/kohls/227522?wid=1000&hei=1000&op_sharpen=1 

拡張子は次のようなイメージになりますか?本当の拡張子を返すにはどうすればいいですか?

ありがとうございます!

+0

私が見る、(それはリソースではないファイルです)は、ファイルの拡張子がないので、あなたがMIMEタイプをチェックする必要がありますと思う:[画像を取得phpのリモート画像の種類](http://stackoverflow.com/questions/3931839/getting-image-type-of-remote-image-in-php) –

+0

リンクありがとう! –

答えて

1

あなたが問題のファイルは、実際に、あなたはあなたが作業している画像の種類を決定するためにgetimagesize()またはexif_imagetype()を使用することができ、画像であることを確認していた場合。その後、適切なファイル名の拡張子にマップすることができます。

イメージではないファイルに対してこれらの関数を呼び出すとどうなるかわからないことに注意してください。唯一の利点のため

+0

良いアイデア。私はすでにスクリプトの別のポイントでgetimagesize()を実行しています。そこからファイルタイプを渡すことができます。ありがとう。 –

0

このコードを試してください。

$url = (POST_IMAGESELECTOR); 
list($width, $height, $type, $attr) = getimagesize($url); 
$imageType = image_type_to_mime_type($type); 
witch($imageType) { 
    case "image/jpeg": 
     // your actions go here... 
} 
0

.. 別のアプローチ:

$newFileName = $_FILES['userfile']['name']; 
$fileExt =substr(strrchr($newFileName,'.'),1); 
関連する問題