글 작성 배경:갤러리 화면 구성 중 이미지 저장하는 부분이 필요하게 됨
알아두어야 할 내용:$_FILES[][]
- HTML 폼에서 <input type="file" id="userfile" .....>를 사용한 파일에 대한 정보를 가지고 있음
- register_globals(php.ini 파일에 들어있는 변수값)가 off일때 꼭 사용해야 함
- $_FILES['userfile']['tmp_name'] - 웹 서버에 임시로 저장된 파일의 위치.
- $_FILES['userfile']['name'] - 사용자 시스템에 있을 때의 파일 이름.
- $_FILES['userfile']['size'] - 파일의 바이트 크기.
- $_FILES['userfile']['type'] - 파일의 MIME 타입을 가리킴. (예:text/plain이나 image/gif 등)
- $_FILES['userfile']['error'] - 파일 업로드할 때 일어난 오류 코드를 알려줌
예제
input.php(입력폼)
---------------------------------------------------------------------------------------
<form method="post" enctype="multipart/form-data" action="save.php">
........
<div id="pimage"><p>이미지:<input type="file" name="uimg" id="textfield" />(이미지사이즈 : 168 X 115)</div>
.........
</form>
---------------------------------------------------------------------------------------
save.php(저장폼)
---------------------------------------------------------------------------------------
<?php
$img_dir = $_SERVER['DOCUMENT_ROOT']."/저장할디렉토리명"; //저장 디렉토리
$img_tmp = $_FILES['uimg']['tmp_name']; //임시 파일명
$img_type = $_FILES['uimg']['type']; //저장가능 이미지 타입
$img_name = $_FILES['uimg']['name']; //파일명(ex : xxxx.jpg)
$filename = explode(".",$img_name); //파일명 및 확장자를 분리한 배열
$extension = strtoupper($filename[sizeof($filename)-1]); //확장자 추출
//타임 및 난수를 이용해서 기존 파일명 대신 사용할려고 함
srand((double)microtime() * 1000000); //난수만들기(seed 초기화)
$random = sprintf('%03d',rand(1,999)); //난수만들기
$up_filename = time()."_".$random.".".strtolower($extension); //DB저장 파일명
$save_name = $img_dir."/".$up_filename; //copy시 전체경로 및 파일명
//파일 확장자로 올릴 수 있는 파일 체크함
if($extension == "JPG" || $extension == "GIF") {
} else {
echo("
<script>
window.alert('지원 가능하지 않는 파일입니다. \\n이미지를 입력하여 주세요.');
history.go(-1);
</script>
");
exit;
}
if(copy($img_tmp, $save_name)) { //파일 업로드
unlink($img_tmp); //임시파일삭제
}
else {
unlink($img_tmp);
echo("
<script>
window.alert('파일 저장시 오류가 발생하였습니다.\\n감사합니다.');
history.go(-1);
</script>
");
exit;
}
.....
DB저장부분 삽입
.....
?>
---------------------------------------------------------------------------------------
이상으로 간단한 예제를 적습니다.
공부시에 많은 도움되면 좋겠습니다.
'찬의 공부방 > PHP Tip' 카테고리의 다른 글
[PHP Framwork 강좌1] 개발환경 셋팅(APMSETUP 설치) (2) | 2012.02.14 |
---|---|
[PHP함수] GD 및 이미지 함수 정리 (2) | 2012.02.14 |
[PHP] 시간 관련 함수 (0) | 2012.02.06 |
[PHP-MYSQL함수] php에서 사용되는 mysql 관련 함수 정리 (0) | 2012.02.05 |
PHP관련사이트 (0) | 2012.01.27 |