//fileupload.php화면을 통해 파일을 업로드하고 제출을 하게 되면 upload_ok.php로 데이터가 넘어가게 된다.
PHP로 파일 업로드 하기 |
fileupload.php |
<HTML> <head> <title> FILE UPLOAD </title> <meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> </head> <body> <form action="upload_ok.php" method="POST" enctype="multipart/form-data"> <input type="file" name="up_file" /> <input type="submit" value="업로드" /> </form> </body> </html> |
upload_ok.php |
<? header("Content-type: text/html; charset=UTF-8"); //한글변환 $filename=$_FILES['up_file']['name']; // ① $ftmp=$_FILES['up_file']['tmp_name']; if($ftmp){ $chk= move_uploaded_file($ftmp,'files/'.$filename); //② chmod('files/'.$filename,0777); } if($chk){ echo" <SCRIPT> alert('파일이 업로드되었습니다.'); history.back(-1); </SCRIPT> "; } else{ echo " <SCRIPT> alert('파일 업로드에 실패 했습니다.'); history.back(-1); </SCRIPT> "; } ?> |
실행화면 |
<fileupload.php> |
① $_FILES는 $_POST와 비슷하게 폼 데이터에 접근하느 용도로 사용한다.(폼 데이터라 하면 페이지에서 변경된 내용이 다른 페이지로 혹은 자신의(본) 페이지로 넘어갈 때에 접근하려는 데이터를 말한다.)
$_POST처럼 $_FILES 또한 배열이고 배열 요소로서 파일명 정보나 여러 내용을 저장하고 있다.
위 소스에서 보면
$_FILES['up_file']['name']에서 'up_file'은 폼의 이름이고 'name'은 그 폼에 입력된 파일명을 가르킨다. 그래서 $_FILES['up_file']['name']은 파일업로드할 시 해당 파일의 명을 담고 있다. 이것은 웹어플리케이션(?)이 그렇게 알아서 저장을 한다.
ex) $_FILES['up_file']['type'] : 업로드한 파일의 유형
$_FILES['up_file']['tmp_name'] : 파일이 저장된 서버의 임시저장위치
$_FILES['up_file']['size'] :파일의 크기
$_FILES['up_file']['error'] :파일 업로드 작업 시 발생한 에러코드 ('0'은 성공을 의미,나머지는 실패를 의미한다.)
②move_uploaded_file함수는 업로드된 파일의 위치를 지정하여 저장하는 역활을 한다.
$chk= move_uploaded_file($ftmp,'files/'.$filename); - > $ftmp에 저장된 파일을 files/파일명 위치에 옴기는 것을 볼 수 있다.