$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
을 입력 한 다음 myfile.jpg
으로 이름을 바꿉니다. 웹 서버는 Content-type: image/jpeg
으로 서비스를 제공 할 것이며 이는 분명히 아닙니다.
결과 배열 "의 Content-Type"을 찾아이 시작되었는지 확인 '이미지 /'
처럼 오이겐 RIECK는 당신이이 이미지를 다운로드하지 않고인지 확신 할 수 없다 고 말했다. 서버가 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";
}
난 그냥 이미지를 다운로드하기 전에 초기 점검을 할 찾고 있어요. 2 차 점검은 getimagesize로 완료되며 이미지가 아닌 경우 삭제됩니다. get_headers가이 목적으로 작동하지 않는다고 말씀 하시겠습니까? – domino
대신 GD를 사용 하시겠습니까? – Shubham
@domino 여러분의 유스 케이스에 대해서는 확실히 이해할 수 있습니다 : 'Content-type' 헤더 (주의, 대소 문자를 구분하지 않음)를 찾고 "image /"로 시작하는지 확인하십시오 –