PHP 파일 업로드 예제


PHP 파일 업로드 예제
PHP에서 파일 업로드 예제에 대하여 설명드립니다. HTML과 PHP를 사용하여 업로드 된 파일을 서버에서 처리하는 방법입니다. 그리고 파일 업로드 사이즈를 설정하는 방법에 대해서 함께 설명드립니다.

HTML 예제

먼저 HTML 파일 업로드 폼을 만들기 위해서는 아래와 같은 폼을 만듭니다. 파일 업로드를 위해서는 데이터 인코딩 방식을 다음과 같이 지정해 주셔야합니다. 그리고 action 값에 업로드될 PHP 파일을 지정해 주시기 바랍니다.

만약 파일 업로드를 자기 자신 주소로 업로드 하기 위해서는 action 속성의 값을 다음과 같이 $_SERVER[‘PHP_SELF’] 으로 지정해서 사용하실 수도 있습니다.

<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>
PHP 파일 업로드 예제

PHP 파일 업로드 예제

업로드된 파일을 처리하는 PHP 코드를 아래와 같이 작성합니다.

<?php

$uploaddir = '/tmp/';

if (count($_FILES)) {
  $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

  echo '<pre>';
  if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
      echo "File is valid, and was successfully uploaded.\n";
  } else {
      echo "Possible file upload attack!\n";
  }

  echo 'Here is some more debugging info:';
  print_r($_FILES);

  print "</pre>";
}

?>

파일을 업로드하여 처리된 결과는 아래와 같습니다.

PHP 파일 업로드 예제

파일 배열 업로드

여러개의 파일을 업로드할 경우 아래와 같이 배열로 HTML 폼을 구성하여 파일을 업로드 할 수 있습니다.

<form action="" method="post" enctype="multipart/form-data">
<p>Pictures:
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="submit" value="Send" />
</p>
</form>

위의 폼에서 업로드된 파일들을 처리 하기 위해서는 아래 내용의 PHP 코드를 작성하여 처리하면 됩니다.

<?php
foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        // basename() may prevent filesystem traversal attacks;
        // further validation/sanitation of the filename may be appropriate
        $name = basename($_FILES["pictures"]["name"][$key]);
        move_uploaded_file($tmp_name, "data/$name");
    }
}
?>

PHP 파일 업로드 용량

파일 업로드에 허용되는 최대 용량은 /etc/php/7.2/apache2/php.ini 파일에 기록되어 있습니다. 설정 파일의 내용중에서 아래와 같이 upload_max_filesize 부분이 있는데 이 부분의 크기를 늘려주시면 PHP 에서 업로드 용량을 늘릴 수 있습니다.

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M

php.ini 파일을 수정한 뒤에는 다음 명령어를 이용하여 웹 서버를 재실행해 주셔야 설정이 적용되게 됩니다.

$ sudo service apache2 restart

PHP 에서 파일 업로드와 관련하여 보다 자세한 내용의 글을 참고해 주시기 바랍니다.

POST method uploads

추가적인 내용으로 PHP 에서 HTML 파싱하는 내용은 아래의 글을 참고해 주시기 바랍니다.

PHP HTML 파싱 예제

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)