2012-05-07 2 views

답변

2

에서 : https://stackoverflow.com/a/3894706/187954

<?php 
$headers = get_headers('http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg'); 
$size = null; 
foreach($headers as $h){ 
    /** look for Content-Length, and stick it in $size **/ 
} 
if ($size === null){ //we didn't get a Content-Length header 
    /** Grab file to local disk and use filesize() to set $size **/ 
} 

echo "image is $size bytes"; 
+0

감사합니다! 1MB (즉, 1024 * 1024)이면 $ size가 1048576의 값을 가질 것이라고 생각하십니까? – weltschmerz

+0

오, 방금 $ 크기가 이미지의 높이와 너비가 아닌 바이트의 크기가 아닌 배열임을 알았습니다. 아무도 그걸 어떻게 알아? – weltschmerz

+0

@ 데니스 나는 거의 같은 시간에 눈치 챘다 : 다른 답변에 대한 참조로 내 대답을 업데이트했습니다 –

1

내가이 게시물을 참조 것, 나는 그것이 귀하의 질문에 대답 것이라 생각합니다. Easiest way to grab filesize of remote file in PHP?

내가 아는 두 가지 접근 방식이 있습니다. 하나는 CURL을 사용하고 헤더 만 가져오고 (더 효율적이고 신뢰성은 떨어짐) file_get_contents (more reliable, less efficient)입니다.

CURL을 사용하면 파일 크기 인 CONTENT_LENGTH 헤더 만 얻을 수 있습니다. 그러면 거기에서 간단한 수학을 통해 1MB가 넘는 지 확인할 수 있습니다. 문제는 원격 서버가 해당 기능을 지원하지 않을 수 있다는 것입니다.

strlen(file_get_contents("YOUR URL"))을 사용하면 파일에서 전체 byes를 얻을 수 있지만 스크립트는 파일을 먼저 다운로드해야하므로 이미지가 큰 경우 문제가됩니다.

파일 형식을 확인하려면 substr을 사용하여 파일 확장자를 확인할 수 있습니다. 이 같은

뭔가 작동하지만 자신의 문제

$ext = substr($URL, -3, 3); 

if($ext == 'jpg' || $ext == 'gif') { 
    //is image 
}else{ 
    //not image 
} 
+0

마이클의 접근 방식이 내 것보다 낫습니다 –

+0

감사합니다! 나는 더 깨끗한 해결책을 찾았다 고 생각한다. 질문 편집을 참조하십시오. – weltschmerz

관련 문제