2012-05-13 9 views

答えて

4

まったくありません。ヘッダーはあなたに(Content-typeを介して)あなたに伝えるかもしれません。が何であるかをサーバは何と思いますか? myfile.zipをWebサーバー上に作成し、myfile.jpgに名前を変更します。ウェブサーバはContent-type: image/jpegでサービスしますが、それは間違いありません。

+0

この方法では非常に単純です。二次検査はgetimagesizeで行われ、画像でなければ削除されます。 get_headersはこの目的のためにはうまくいかないでしょうか? – domino

+0

代わりにGDを使用しますか? – Shubham

+0

@dominoあなたのユースケースについては、これは意味をなさないと確信しています: 'Content-type'ヘッダ(注意、大文字と小文字を区別しないマッチング)を調べて、" image/"で始まるかどうか確認してください。 –

1

結果配列の「Content-Typeの」を探し、それがオイゲンRieck LIKE「画像/」

3

で始まることを確認してくださいあなたがそれをダウンロードすることなく、画像のかどうか確認することはできません、と述べました。 サーバーがContent-Typeヘッダーをイメージのように見えるように変更することは、常に可能です。あなたがそれをダウンロードした後

しかし、あなたはこの機能を使って、それを確認することができます:

if (getimagesize('path/to/image.jpg')) { 
    // image 
} 
else { 
    // not an image 
} 

あなたはとにかくコンテンツタイプを使用する場合、これは動作するはずです:

$headers = array_change_key_case (get_headers ('http://example.com/exampleimage.jpg', 1)); 
if (substr ($headers ['content-type'], 0, 5) == 'image') { 
    // image 
} 
else { 
    // not an image 
} 

array_change_key_case()は、すべての配列キーを小文字にするために使用されるため、ケースでは違いはありません。

+0

array_change_key_caseがどのように存在するのか分からなかったのですか? +1 – goat

0

それは私がちょうど画像をダウンロードする前に、初期チェックを行うために探しています、

$headers = get_headers('http://covers.openlibrary.org/b/isbn/9780141323367-S.jpg'); 
$image_exist = implode(',',$headers); 
if (strpos($image_exist, 'image') !== false) 
{ 
    echo 'Yups'; 
} 
else 
{ 
    echo "Nopes"; 
} 
関連する問題