반응형

    [PHP] 파일 업로드

    php 파일 업로드 기능에 대해서 포스팅 해보고자 합니다. 

    본 문서는 w3c school에 있는 파일업로드를 참고하여 작성한 문서입니다.

    https://www.w3schools.com/php/php_file_upload.asp

     

    PHP File Upload

    W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

    www.w3schools.com

     

    전체 코드를 먼저 보시고 하나하나 설명을 하려 합니다.

     

    전체 코드

    <?php
    $target_dir = "uploads/";
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
      $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
      if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
      } else {
        echo "File is not an image.";
        $uploadOk = 0;
      }
    }
    
    // Check if file already exists
    if (file_exists($target_file)) {
      echo "Sorry, file already exists.";
      $uploadOk = 0;
    }
    
    // Check file size
    if ($_FILES["fileToUpload"]["size"] > 500000) {
      echo "Sorry, your file is too large.";
      $uploadOk = 0;
    }
    
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
      echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
      $uploadOk = 0;
    }
    
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
      echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
      if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
      } else {
        echo "Sorry, there was an error uploading your file.";
      }
    }
    ?>

     

    $uploadOk = 0; 

     

    $uploadOk가 0 되면 문제가 있는 것으로 간주하여 업로드를 막는다.

     

    크게 3가지를 검사한다.

     

    1.파일 존재 유무

    2.파일 크게 제한

    3.파일 형식 제한

     

    위의 3개 모두를 충족시키지 않으면 업로드를 할 수 없게 된다.

     

    1.파일 존재 유무 - 같은 파일이 있나 확인

    file_exists() 함수를 통하여 해당 위치에 같은 이름의 파일이 있는지 확인한다.

     

    2.파일 크게 제한 - 크기 확인 

    업로드 할 파일의 사이즈가 0.5MB보다 큰지 확인한다.

    여기서의 숫자는 1당 1bit가 되며 1000당 단위가 증가 한다. 0.5MB == 500kb이다.

     

    3.파일 형식 제한 - 확장자 확인

    확장자를 확인하여 업로드 가능한 파일인지 확인한다.

    확장자에는 zip, pdf, hwp, xlxs, ppt, pptx, apk, png, jpg, gif 등 다양한 확장자명이 존재하며 일일이 설정해 줘야 한다.

     

    파일 업로드

    move_uploaded_file() 함수를 통하여 업로드할 파일을 경로에 업로드 한다. 

    이전에 file 전송하기에 보면 ftp권한 설정을 해야지 업로드가 가능한데. 업로드 하기 전에 꼭 확인하기 바란다.

     

    2021.07.05 - [웹언어/PHP] - [PHP] file 전송하기

     

    [PHP] file 전송하기

    [PHP] file 전송하기 HTML의 form 태그를 이용하면 form안에 입력한 데이터를 전송할수 있고 [HTML] form 사용법 [HTML] form 사용법 HTML form form태그를 이용하면 문서를 서버로 전송합니다. form 안에 있는..

    jh91.tistory.com

     

    반응형

    '웹언어 > PHP' 카테고리의 다른 글

    [PHP]닷홈 호스팅 phpMyAdmin 접속하기  (2) 2022.02.25
    [PHP]닷홈 호스팅 DB연결하기  (2) 2022.02.18
    [PHP] file 전송하기  (4) 2021.07.05
    [PHP] 문서불러오기  (13) 2021.05.25
    [PHP] $_POST, $_GET 데이터 받기  (6) 2021.05.23
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기