$headers = get_headers("http://www.domain.com/image.jpg");
このファイルを使用してファイルが実際のイメージであることを確認するにはどうすればよいですか?get_headersを使用してリモートファイルが画像であるかどうかを確認する方法
$headers = get_headers("http://www.domain.com/image.jpg");
このファイルを使用してファイルが実際のイメージであることを確認するにはどうすればよいですか?get_headersを使用してリモートファイルが画像であるかどうかを確認する方法
まったくありません。ヘッダーはあなたに(Content-type
を介して)あなたに伝えるかもしれません。が何であるかをサーバは何と思いますか? myfile.zip
をWebサーバー上に作成し、myfile.jpg
に名前を変更します。ウェブサーバはContent-type: image/jpeg
でサービスしますが、それは間違いありません。
結果配列の「Content-Typeの」を探し、それがオイゲンRieck LIKE「画像/」
で始まることを確認してくださいあなたがそれをダウンロードすることなく、画像のかどうか確認することはできません、と述べました。 サーバーが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()
は、すべての配列キーを小文字にするために使用されるため、ケースでは違いはありません。
array_change_key_caseがどのように存在するのか分からなかったのですか? +1 – goat
それは私がちょうど画像をダウンロードする前に、初期チェックを行うために探しています、
$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";
}
この方法では非常に単純です。二次検査はgetimagesizeで行われ、画像でなければ削除されます。 get_headersはこの目的のためにはうまくいかないでしょうか? – domino
代わりにGDを使用しますか? – Shubham
@dominoあなたのユースケースについては、これは意味をなさないと確信しています: 'Content-type'ヘッダ(注意、大文字と小文字を区別しないマッチング)を調べて、" image/"で始まるかどうか確認してください。 –