PHP 주요레퍼런스/파일 시스템 함수

is_uploaded_file / move_uploaded_file

웹 개발자의 비상 2011. 8. 8. 15:35
bool is_uploaded_file(string filename)
파일이 HTTP 프르토콜의 POST방식을 통해 업로드되었는지를 확인한다.

filename이 HTTP 프로토콜의 POST 방식을 통해 업로드 되었으며 TRUE를 그렇지 않으면 FALSE를 반환한다.

bool move_uploaded_file(string filename, string destination)
업로드 된 파일을 지정한 위치로 옮긴다.

<input type="file">로 업로드되는 파일은 웹서버에서 지정한 임시디렉토리(보통 /tmp)에 저장되었다가 스크립트가 종료되면 자동으로 삭제된다.

move_uploaded_file()은 이렇게 임시디렉토리의 filename을 desination으로 이동시키는 역할을 한다. 그러므로 desination은 디렉토리명이된다. desination이 없거나 실패할 경우 FALSE를 반환하고 이미존재할경우 덮어쓴다.

한편 <input type ="file">형태로 파일이 업로드되면 파일정보는 $_FILES에 연관배열 형태로 저장되면 배열의 양식을 아래와 같다.

배열의 원소 의미
$_FILES["inputname"]["name"] 파일의 실제 이름
$_FILES["inputname"]["type"] 파일의 MIME 타입(ex: "image/gif")
$_FILES["inputname"]["size"] 파일의 크기 (바이트)
$_FILES["inputname"]["tmp_name"] 임시 디렉토리에 전송된 파일의 이름
$_FILES["inputname"]["error"] 파일 업로드와 관련된 에러코드번호

예제

<html>
<head>
<title>PHP를 이용한 파일업로드 예제</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<style type="text/css">
<!--
BODY, TD {
font-size : 10pt;
}
//-->
</style>
</head>

<body>
<form method="post" enctype="multipart/form-data" action="datasubmit.php">

<table width="602" border="0" cellspacing="0" cellpadding="1" align="center">
<tr>
<td bgColor="#8080FF">

<table width="600" border="0" cellspacing="1" cellpadding="10" align="center">
<tr>
<td width="600" colspan="2" align="center" bgColor="#CFD0ED"><b>PHP를 이용한 파일업로드 기능의 구현</b></td>
</tr>
<tr>
<td width="150" align="center" bgColor="#FAFAEE">업로드할 파일</td>
<td width="450" bgColor="#FAFAEE"><input type="file" name="myFile" size="40"> </td>
</tr>
<tr>
<td align="center" colspan="2" bgColor="#CFD0ED"><input type="submit" value="파일 업로드"> <input type="reset" value="취 소"></td>
</tr>
</table>

</td>
</tr>
</table>

</form>
</body>
</html>



예제-datasubmit.php

<?
// 업로드한 파일을 저장할 디렉토리
$save_dir = "./files";

// 파일이 HTTP POST 방식을 통해 정상적으로 업로드되었는지 확인한다.
if(is_uploaded_file($_FILES["myFile"]["tmp_name"])) {

echo "업로드한 파일명 : " . $_FILES["myFile"]["name"] . "<br>"; //Hydrangeas.jpg
echo "업로드한 파일의 크기(Bytes) : " . $_FILES["myFile"]["size"] . "<br>"; //595284
echo "업로드한 파일의 MIME Type : " . $_FILES["myFile"]["type"] . "<br>"; //image/pjpeg
echo "임시 디렉토리에 저장된 파일명 : " . $_FILES["myFile"]["tmp_name"] . "<br>"; ///tmp/phpQDQpvq

// 파일을 저장할 디렉토리 및 파일명
$dest = $save_dir . "/" . $_FILES["myFile"]["name"];

// 파일을 지정한 디렉토리에 저장
if(!move_uploaded_file($_FILES["myFile"]["tmp_name"], $dest)) {
die("파일을 지정한 디렉토리에 저장하는데 실패했습니다.");
}
} else {
echo "업로드된 파일이 없습니다.";
}
?>



728x90

'PHP 주요레퍼런스 > 파일 시스템 함수' 카테고리의 다른 글

parse_ini_file  (0) 2011.08.08
ftell  (0) 2011.08.08
rewind  (0) 2011.08.08
pathinfo  (0) 2011.08.08
dirname  (0) 2011.08.08