티스토리 뷰

Language/PHP

[ PHP ] 파일 업로드

MiniNeko 2016. 2. 4. 04:44

<!doctype html>
<html lang=`ko`>
<head>
   <meta charset="utf-8">
</head>
<body>
<form name="form1" method="post" action="upload.php" ENCTYPE="multipart/form-data" accept-charset="UTF-8">
<input type="file" name="txtPHOTO" id="txtPHOTO" READONLY/>
<?php if($row["S_PHOTO_REAL"]!="") {
   $savedir = "/upfile/ZJ20141127_224420/";
   //echo "<a href=`".$savedir.$row["S_PHOTO"]."` target=`_blank`>".$row["S_PHOTO_REAL"]."</a>";
   echo "<a href=`".$savedir.$row["S_PHOTO"]."` target=`_blank` style=`padding-right:20px;`>이미지</a>";
} ?>※ 용량은 2MB 초과 할 수 없습니다 ※ 파일은 JPG / PNG 만 가능합니다.<input type="submit" />
</form>
</body>
</html>


[ upload.php ] 
<?
// 파일처리 시작
if($txtPHOTO=="") { // 이름은 없는데 기존 파일명이 있는경우
   $queryCheck = "SELECT * FROM DBS_SUDAN_DETAIL WHERE S_P_IDX = ".$dataSidx;
   $resultCheck = mysql_query($queryCheck);
   $rowNumCheck = mysql_affected_rows();
   for($c = 0; $c < $rowNumCheck; $c++) {
      $rowCheck = mysql_fetch_array($resultCheck);
      $fileFullNameReal = $rowCheck["S_PHOTO_REAL"];
      $fileFullName = $rowCheck["S_PHOTO"];
   }
}
if($txtPHOTO!="") {
   $fileFullNameReal = $_FILES["txtPHOTO"]["name"];
   $fileFullName = date("YmdHis");
   $fileFullNameTemp = $_FILES["txtPHOTO"]["tmp_name"];

   $fileExtName = pathinfo($fileFullNameReal); // dirname / basename / extension
   $fileExtName =  $fileExtName[`extension`];
   $fileFullName .= ".".$fileExtName;

   $fileSize = $_FILES["txtPHOTO"]["size"]; // 31998byte
   $fileSizeMB = bcdiv(bcdiv($fileSize,`1024`,3),`1024`,3); // byte -> MB 변환

   // 파일용량 2MB 체크 시작
   if($fileSizeMB > 2) {
      echo "<script>alert(`파일용량은 2MB 를 초과 하실 수 없습니다. 작은 사이즈의 파일을 업로드 해주세요`);</script>";
      break;
   }
   // 파일용량 2MB 체크 끝

   // 확장자 체크 시작
   if(!(
      (strcasecmp($fileExtName, "JPG") == 0)
      OR
      (strcasecmp($fileExtName, "PNG") == 0)
   )) {
      echo "<script>alert(`등록할수 없는 파일 형식 입니다`);</script>";
      break;
   }
   // 확장자 체크 끝

   // 파일 저장위치 시작
   //$savedir = $_SERVER[DOCUMENT_ROOT]."/upfile/".$dataMunjung."/";
   $savedir = $_SERVER[DOCUMENT_ROOT]."/upfile/ZJ20141127_224420/";
   //$savedir = $_SERVER[DOCUMENT_ROOT]."/upfile/";
   $dest = $savedir."".$fileFullName;
   $fileFullNameTemp = $_FILES["txtPHOTO"]["tmp_name"];
   if(@exec("cp $fileFullNameTemp $dest")!=0){
      echo "<script>alert(`파일입력 오류`);</script>";
      break;
   } else {
      unlink($fileFullNameTemp);

      // 기존 이미지가 있으면 삭제 시작
      $queryCheck = "SELECT * FROM DBS_SUDAN_DETAIL WHERE S_P_IDX = ".$dataSidx;
      $resultCheck = mysql_query($queryCheck);
      $rowNumCheck = mysql_affected_rows();
      for($c = 0; $c < $rowNumCheck; $c++) {
         $rowCheck = mysql_fetch_array($resultCheck);
         if($rowCheck["S_PHOTO"]!="") { // 파일이 있을 경우
            $fileFullNameTemp = $savedir.$rowCheck["S_PHOTO"]; //$savedir 위 저장위치에서 가져옴
            unlink($fileFullNameTemp);
         }
      }
      // 기존 이미지가 있으면 삭제 끝
   }
   // 파일 저장위치 끝


   //echo "<script>alert(`파일작업 / ".$fileFullNameReal." / ".$fileFullNameTemp." / ".$fileFullName." / ".$fileSize." / ".$fileSizeMB." / ".$savedir." `);</script>";
   //break;
}
// 파일처리 끝
?>

Total
Today
Yesterday
최근에 올라온 글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31