1
$headers = get_headers("http://www.domain.com/image.jpg");

これを使用して、ファイルが実際の画像であることを確認するにはどうすればよいですか?

4

4 に答える 4

4

全くない。ヘッダーは、サーバーがこれをどのように認識しているかを(経由でContent-type通知する場合と通知しない場合がありますが、たとえばWebサーバーに配置してから名前を変更することを妨げるものは何もありません。Webサーバーはそれを提供しますが、それは間違いなくそうではありません。myfile.zipmyfile.jpgContent-type: image/jpeg

于 2012-05-13T14:34:48.567 に答える
4

Eugen Rieck が言ったように、それが画像かどうかは、ダウンロードしないとわかりません。サーバーが Content-Type ヘッダーを変更して、画像のように見せることは常に可能です。

ただし、ダウンロードした後、次の関数を使用して確認できます。

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

とにかく Content-Type を使用したい場合は、これでうまくいくはずです:

$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()すべての配列キーを小文字にするために使用されるため、大文字と小文字は区別されません。

于 2012-05-13T14:39:47.663 に答える
1

結果配列で「Content-Type」を探し、「image/」で始まっていることを確認します

于 2012-05-13T14:37:32.117 に答える
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";
}
于 2013-02-22T19:09:29.437 に答える