2014-12-06 4 views
0

나는 나는 다음과 같은 방법을 사용하여 이미지를 저장할 수 있습니다 알고이미지를 다운로드하기 전에 이미지의 유형을 파악하는 방법은 무엇입니까?

$input = 'http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com'; 
$output = 'google.com.jpg'; // << How to save the image with proper extension? 
file_put_contents($output, file_get_contents($input)); 

하지만 제가이 다운로드 한 이미지의 형식을 모른다면? 그것이 "png"라면? 저장하기 전에 대상 이미지의 유형을 어떻게 알 수 있습니까?

답변

1

가장 좋은 방법은 파일을 다운로드 한 다음 나중에 파일 이름을 바꾸는 것입니다. 그렇게하면 한 번만 요청하면됩니다.

하지만 할 수있는 또 다른 방법은 HTTP HEAD 요청입니다. 이렇게하면 Content-Type 헤더를 포함하여 모든 응답 헤더가 생성되므로 파일을 다운로드하기 전에 해당 데이터를 원하는지 여부를 결정할 수 있습니다. 그러나 모든 서버가 HEAD 요청을 지원하는 것은 아닙니다. 서버가 HEAD 요청을 지원하지 않는 경우 중대하다,하지만

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/something'); 
curl_setopt($ch, CURLOPT_NOBODY, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
$headers = curl_exec($ch); 
+0

: 어떤 경우에

는 컬이 작업을 수행하는 가장 쉬운 방법은? – Meysam

+0

@Meysam 그런 경우에는 정상적인 GET 요청을 수행하고 다운로드를 취소해야합니다. 그 시점에서 응답 헤더를 검사하여 유형을 얻을 수 있습니다. 당신이해야 할 일은 먼저 데이터를 다운로드 한 다음 그 파일의 이름을 변경하는 것입니다. – Brad