php 파일 업로드 여부 확인

조회수 1776회

게시판을 만들고 있는데 파일 업로드에서 파일 첨부 여부를 확인하고 싶은데 잘 안되네요..ㅠㅠ

write.html

<div class="banner">
                <form enctype="multipart/form-data" action="php/Write_Update.php?location=<?php echo $location ?>" method="POST">
                    <div class="post">
                        <div class="carteory">
                            <select name="Carteory">
                                <option value="전체">전체</option>
                                <option value="기타">기타</option>
                            </select>
                        </div>
                        <div class="post-title">
                            <h3>제목</h3>
                            <input type="text" name="title" placeholder="제목을 입력하세요.">
                        </div>
                        <div class="post-content">
                            <h3>내용</h3>
                            <textarea name="content" placeholder="내용을 입력하세요."></textarea>
                        </div>
                        <div class="post-tag">
                            <h3>태그</h3>
                            <input type="text" name="tag" placeholder="#">
                        </div>
                        <div class="FileupBtn">
                            <input type="file" name="profile">
                        </div>
                        <div class="Btn-up">
                            <button class="uploadBtton">작성</button>
                        </div>
                    </div>
                </form>
            </div>

write_update.php

if($member['User_Log']==1) {
      // print "if";
      $Carteory = $_POST['Carteory'];
      $Title = $_POST['title'];
      $Content = $_POST['content'];
      $date = date('Y-m-d H:i:s');
      $Tag = $_POST['tag'];

      if(isset($_FILES['profile'])) {
         print $_FILES['profile'];
         // $imagecheck = array('jpg', 'jpeg', 'gif', 'png', 'bmp');
         $imgpath = pathinfo($_FILES['profile']['name']);

         $file_name = $_FILES['profile']['name'];                // 업로드한 파일명
         $file_tmp_name = $_FILES['profile']['tmp_name'];   // 임시 디렉토리에 저장된 파일명
         $file_size = $_FILES['profile']['size'];                 // 업로드한 파일의 크기
         $mimeType = $_FILES['profile']['type'];                 // 업로드한 파일의 MIME Type

         // 첨부 파일이 저장될 서버 디렉토리 지정
         $save_dir = '../uploadFile/';

         // 업로드 파일 확장자 검사
         // if(in_array($mimeType, $imagecheck)) {
         //       echo("<script> alert('업로드를 할 수 없는 파일형식입니다.'); </script>");  
         //       echo("<script>location.href='../Write.html';</script>");
           //       exit;
         // } 

         // 파일명 변경
       $real_name = $file_name;     // 원래 파일명(업로드 하기 전 실제 파일명) 
          $arr = explode(".", $real_name);   // 원래 파일의 확장자명을 가져와서 그대로 적용 $file_exe    
       $file_exe = $mimeType;
         $arr1 = $arr[0];   
         $arr2 = $arr[1];   
         $arr3 = $arr[2];
         $arr4 = $arr[3];   
         if($arr4) {
            $file_exe = $arr4;
         } else if($arr3 && !$arr4) { 
            $file_exe = $arr3;                  
         } else if($arr2 && !$arr3) {
            $file_exe = $arr2;                  
         }

       $file_time = time(); 
        $file_Name = "file_".$file_time.".".$file_exe;   // 실제 업로드 될 파일명 생성
        $change_file_name = $file_Name;          // 변경된 파일명을 변수에 지정 
        $real_name = addslashes($real_name);        // 업로드 되는 원래 파일명(업로드 하기 전 실제 파일명) 
        $real_size = $file_size;                         // 업로드 되는 파일 크기

         //파일을 저장할 디렉토리 및 파일명 전체 경로
         $dest_url = $save_dir . $change_file_name;

         //파일을 지정한 디렉토리에 업로드
         if(!move_uploaded_file($file_tmp_name, $dest_url))  {
            die("파일을 지정한 디렉토리에 업로드하는데 실패했습니다.");
         }
      }
      // else {
      //    die("else");
      // }

      $sql2 = "insert into " . $db_location . "(id, carteory, title, content, date, tag, change_file_name, real_name, real_size) values 
      ('$id', '$Carteory', '$Title', '$Content', '$date', '$Tag', '$change_file_name', '$real_name', '$real_size')"; 

      $result = mysqli_query($conn, $sql2);

      if($result) { //query가 정상실행 되었다면,
         echo("<script> alert('정상적으로 글이 등록되었습니다.'); location.href='../$web_location';</script>");
      }
      else {
         echo("<script> alert('글을 등록하지 못했습니다.'); location.href='../Write.html?location=$db_location';</script>");
      }
   }

소스코드의 일부입니다.

write_update.php에서 if(isset($_FILES['profile']))으로

파일첨부 여부를 확인하고 싶은데 무조건 true로 나오네요

어떻게 해야되나요??

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 파일이 첨부되지 않아도 $_FILES['profile'] 는 "" 으로 isset 에 무조건 참에 해당할 수 밖에 없어보입니다. $_FILES['profile']['name']의 "" 여부를 확인하면 해당 문제를 해결할 수 있어 보입니다. 김호원 2020.4.2 11:06

1 답변

  • index.php

    <form enctype="multipart/form-data" action="Write_Update.php" method="POST">
    <input type="file" name="profile">
    <button class="uploadBtton">작성</button>
    </form>
    

    Write_update.php

            if(isset($_FILES['profile']))
            {
                  echo "ISSET  ";
            }
    
            if(isset($_FILES['profile']) && $_FILES['profile']['name'] != "")
            {
                  echo $_FILES['profile']['name'];
                  echo "upload";
            }
            else
            {
                  echo "cannot upload";
            }
    

    파일 안올려놓고 전송시 : ISSET cannot upload

    파일 올려놓고 전송시 : ISSET [파일명] upload

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)