본문 바로가기

아카이브/PHP

파일업로드

반응형


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

<input type="hidden" name="MAX_FILE_SIZE" value="30000">

전송할 파일 : <input name="userfile" type="file">

<input type="submit" value="파일 전송">

</form>


<?php

$uploaddir = "/uploads/";

$uploadfile = $uploaddir . $_FILES['userfile']['name'];


if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {

   echo "파일 업로드 성공";

} else {

   echo "파일 업로드 실패";

}

?>


*주의 : 용량제한에 걸릴 수 있으니 value = "30000" 값에 주의한다. 또한, 안드로이드와 연동할 경우 안드로이드 코드에서의 변수 name값과 php코드에서 userfile이라고 표시된 부분의 이름이 같아야 한다.


$_FIELS 배열 정보 (예제에서 사용한 userfile로 표현함에 주의. 어떤 이름이라도 가질 수 있다.)


$_FILES['userfile']['name']

클라이언트 머신에 존재하는 파일의 원래 이름.


$_FILES['userfile']['type'];

브라우저가 이 정보를 제공할 경우에, 파일의 mime 형식. 예를 들면 "image/gif".


$_FILES['userfile']['size'];

업로드된 파일의 바이트로 표현한 크기.


$_FILES['userfile']['tmp_name'];

서버에 저장된 업로드된 파일의 임시 파일 이름.


$_FILES['userfile']['error'];

파일 업로드에 관련한 에러 코드. ['error']는 PHP 4.2.0에서 추가 됨.


* 폼에서 어떠한 파일도 선택하지 않으면, PHP는 $_FILES['userfile']['size']를 0으로, $_FILES['userfile']['tmp_name']을 none으로 반환한다.




에러 메세지 설명


UPLOAD_ERR_OK

값: 0; 오류 없이 파일 업로드가 성공.


UPLOAD_ERR_INI_SIZE

값: 1; 업로드한 파일이 php.ini upload_max_filesize 지시어보다 큼.


UPLOAD_ERR_FORM_SIZE

값: 2; 업로드한 파일이 HTML 폼에서 지정한 MAX_FILE_SIZE 지시어보다 큼.


UPLOAD_ERR_PARTIAL

값: 3; 파일이 일부분만 전송 됨.


UPLOAD_ERR_NO_FILE

값: 4; 파일이 전송되지 않음.




php.ini에서 설정 값을 확인한다.


- file_uploads            -> 업로드 사용 여부. On

- upload_tmp_dir          -> 임시 저장 될 디렉토리 /tmp

- upload_max_filesize     -> 허용하는 파일 최대 크기 

- max_file_uploads        -> 허용하는 최대 업로드 수 



반응형

'아카이브 > PHP' 카테고리의 다른 글

OPcache, APC/APCu  (0) 2016.06.13
PHP - xhprof (profiler)  (0) 2016.06.10
isset vs empty vs in_null 반환값 비교  (0) 2015.01.29
[환경변수] SERVER 전역변수  (0) 2015.01.29
트랩도어함수(암호화)  (0) 2015.01.21