2013. 10. 23.

HTML form의 input으로 파일(file) 넘겨 받을때 오류 처리 조건문.

PHP 버전이 현재 쓰고 있는 것보다 더 높은 곳으로 서버를 옮겼습니다. type=file인 input을 POST 방식으로 받아 처리하는 페이지가 있는데 서버를 옮긴 이후로 결과가 달라졌더라고요. 일반적인 form과 input 입니다.
 
<form action="upload_file.php" method="post" enctype="multipart/form-data">
      <input type="file" name="file" id="file">
      <input type="submit" name="submit" value="Submit">
</form>

upload_file.php에서 file이 잘 넘어왔는지 확인하는 조건 절이 있는데 이상합니다. extract() 함수를 이용해서 $_POST 변수를 풀어 놓은 상태라 바로 $file 이런 식으로 사용했고요. 위에 보면 input name 속성을 file로 해놨습니다. 가만있자... file 이라는 변수명은 HTML이나 PHP의 예약어라서 사용을 할 수 없는 건가요? form의 name 속성 값을 form 이라고 주면 안됐었던 걸로 갑자기 기억이 나는 듯 마는 듯 합니다.
http://php.net/manual/kr/function.extract.php

if( $file ){...}

같은 소슨데 버전이 달라졌다고 내게 이런 귀찮음을 선물하다니 ㅜ _ㅜ 귀찮습니다.
제대로 쓰려면 어떻게 해야 하나 싶어서 좀 찾아 봤습니다. 아래 링크 참조.
http://www.w3schools.com/php/php_file_upload.asp

권장 사항은 이렇네요.

if ($_FILES["file"]["error"] > 0){...}  

음! 그럼 우리는 이렇게 사용해주면 되겠습니다.

<?php
if ( $_FILES['file']['error'] == 0 ) {
      //에러없을때, 잘 넘어왔을때.
} else {
      //에러.
}
?>

댓글 없음 :

댓글 쓰기