2016-09-11 1 views
0

사용자로부터 이미지를 가져 오려고합니다. 이제 파일 크기가 2MB를 넘으면 내 스크립트는 사용자에게 2MB의 파일 크기 제한이 있다는 메시지를 반환해야합니다. 이를 위해 다음과 같은 확인을했습니다. -파일 크기가 2MB를 초과하면 getimagesize가 경고를 반환합니다.

if($_FILES["QuestionImage"]["size"] > 2097152){ 
    echo "File size is more than 2 MB"; 
}else{ 
    $check = getimagesize($_FILES["QuestionImage"]["tmp_name"]); 
    ...... 
} 

그러나 파일 크기가 2MB보다 크면 스크립트는 여전히 else 섹션에 저장됩니다. 왜 이런 일이 일어나는지 모르겠습니다. 나는 1 MB의 제한으로 테스트했고 1.4 MB의 파일을 업로드하려고 시도했다. 이 경우 코드가 완벽하게 작동합니다. 그러나 동일한 코드에서 파일 크기가 2MB이면 여전히 else 섹션에 들어가고 getimagesize는 오류를 반환합니다. 어떤 포인터?

+0

2MB보다 큰 테스트는 무엇입니까? 5MB와 같은 것을 테스트하고 있습니까? 나는 2087152 바이트가 정확히 2MB라고 생각하지 않는다. –

+0

'$ _FILES [ "QuestionImage"] [ "size"]'의 값을 출력하고 기대 한 것이 맞는지 확인하십시오. – ceejayoz

+0

그건 오타였습니다. 나는 그것을 바로 잡았다. – soumyajyoti

답변

0

이 해결 방법은 누군가 다른 사람이 게시 한 것으로 삭제되었습니다. 그것은 작동합니다. 하지만 근본적인 문제를 이해해야합니다.

if(filesize($_FILES['QuestionImage']['tmp_name']) > 2097152){ 
    echo "File size is more than 2 MB"; 
}else{ 
    $check = getimagesize($_FILES["QuestionImage"]["tmp_name"]); 
    ...... 
    } 
+0

여기서 곱셈을 해보자. 2 MB = (2 * 1024 * 1024) 바이트 = 2087152 바이트가 아니라 2097152 바이트. –

+0

그건 타입 메이트였습니다. 내가 말하고자하는 것은 위와 같은 방식으로 파일 크기에 액세스 할 때 작동한다는 것입니다. 그러나 원래 것은 그렇지 않았습니다. 왜 – soumyajyoti

+0

@ MarkB의 대답은 * 여기에 * 있을지도 모르는 것들에 대한 관점을 제공합니다. [http://stackoverflow.com/a/14758212/5517143](http://stackoverflow.com/a/14758212/5517143) –

관련 문제