2012-05-13 3 views

답변

4

전혀 아닙니다. 헤더는 (Content-type을 통해) 서버 이 무엇이라고 생각하는지 알려주거나 알려주지 않을 수 있습니다.하지만 아무 것도 입력하지 않아도됩니다. 웹 서버에 myfile.zip을 입력 한 다음 myfile.jpg으로 이름을 바꿉니다. 웹 서버는 Content-type: image/jpeg으로 서비스를 제공 할 것이며 이는 분명히 아닙니다.

+0

난 그냥 이미지를 다운로드하기 전에 초기 점검을 할 찾고 있어요. 2 차 점검은 getimagesize로 완료되며 이미지가 아닌 경우 삭제됩니다. get_headers가이 목적으로 작동하지 않는다고 말씀 하시겠습니까? – domino

+0

대신 GD를 사용 하시겠습니까? – Shubham

+0

@domino 여러분의 유스 케이스에 대해서는 확실히 이해할 수 있습니다 : 'Content-type' 헤더 (주의, 대소 문자를 구분하지 않음)를 찾고 "image /"로 시작하는지 확인하십시오 –

1

결과 배열 "의 Content-Type"을 찾아이 시작되었는지 확인 '이미지 /'

3

처럼 오이겐 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()은 모든 배열 키를 소문자로 바꾸어서 차이를 만들지 않습니다.

+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"; 
} 
관련 문제