본문 바로가기

WEB/PHP

php 파일 업로드

//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/파일명 위치에 옴기는 것을 볼 수 있다.