티스토리 뷰

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 ] 
<?php
$rootPage = "10_new.php"; // 페이지

// 파일 처리 시작
$fileNum = count($_FILES['txtPHOTO']);
$savedir = $_SERVER[DOCUMENT_ROOT]."/upfile/teacher/";
$beforePhoto = ""; // 기존 사진 파일명
// 수정인 경우 기존 사진 이미지가 있는지 확인
if($txtMode == "MOD") {
   $queryCheck = "SELECT * FROM  t_teacher2 WHERE t_idx = '".$txtIdx."' ";
   $resultCheck = mysql_query($queryCheck);
   $rowNumCheck = mysql_affected_rows();
   for($c = 0; $c < $rowNumCheck; $c++) {
  $rowCheck = mysql_fetch_array($resultCheck);
  if(trim($rowCheck["photo"]) != "") {
  $beforePhoto = $savedir.$rowCheck["photo"];
  }
   }
}
//

if($_FILES["txtPHOTO"]["name"]!="") {
   $fileFullNameReal = $_FILES["txtPHOTO"]["name"];
   $fileFullName = date("YmdHis");
   $fileFullNameTemp = $_FILES["txtPHOTO"]["tmp_name"];

   //$fileExtName = pathinfo($fileFullNameReal); // dirname / basename / extension
   //$fileExtName =  $fileExtName[`extension`];
   //$fileFullName .= ".".$fileExtName;
   $fileExtName=explode(".",$fileFullNameReal);
   $fileExtName=$fileExtName[sizeof($fileExtName)-1];
   $fileFullName .= ".".$fileExtName;

   $fileSize = $_FILE["txtPHOTO"]["size"]; // 31998byte
   $fileSizeMB = bcdiv(bcdiv($fileSize,1024,3),1024,3); // byte -> MB 변환 : bcdiv(조건1,조건2,소수점자리) : 조건1 나누기 조건 2

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

   // 확장자 체크 시작
   if(!(
      (strcasecmp($fileExtName, "JPG") == 0)
      OR
   (strcasecmp($fileExtName, "JPEG") == 0)
      OR
      (strcasecmp($fileExtName, "GIF") == 0)
   OR
      (strcasecmp($fileExtName, "PNG") == 0)
   )) {
      echo "<script>alert(`등록할수 없는 파일 형식 입니다`);</script>";
  unlink($fileFullNameTemp); // 임시파일 삭제
      //break;
  echo "<script>history.back();</script>";
   }
   // 확장자 체크 끝
}
// 파일 처리 끝


// INSERT
if($txtMode == "INS") {
$query = "";
$query .= " INSERT INTO t_teacher2 SET ";
$query .= " gubun = '".trim($txtGubun)."', ";
$query .= " code = '".trim($txtCode)."', ";
$query .= " name = '".trim($txtName)."', ";
$query .= " position = '".trim($txtPosition)."', ";
$query .= " major = '".trim($txtMajor)."', ";
$query .= " room = '".trim($txtRoom)."', ";
$query .= " tel = '".trim($txtTel)."', ";
$query .= " email = '".trim($txtEmail)."', ";
$query .= " photo = '".trim($fileFullName)."', ";
$query .= " note1 = '".trim($txtNote1)."', ";
$query .= " note2 = '".trim($txtNote2)."' ";

$result = mysqli_query($conn,$query);
if($result) {
$dest = $savedir."".$fileFullName;
//if(@exec("cp $fileFullNameTemp $dest")!=0){ // linux
if(move_uploaded_file($fileFullNameTemp, $dest)) { // window
unlink($fileFullNameTemp); // 임시파일 삭제
} else {
echo "<script>alert(`파일입력 오류`);</script>";
//break;
echo "<script>history.back();</script>";
}
echo "<script>alert('등록에 성공 하였습니다.');</script>";
echo "<script> location.replace('/html/01_about/$rootPage?subPage=$subPage');</script>";
} else {
echo "<script>alert('등록에 실패 하였습니다.');</script>";
unlink($fileFullNameTemp); // 임시파일 삭제
echo "<script>history.back();</script>";
}
}

// MODIFY
if($txtMode == "MOD") {
$query = "";
$query .= " UPDATE t_teacher2 SET ";
$query .= " gubun = '".trim($txtGubun)."', ";
$query .= " code = '".trim($txtCode)."', ";
$query .= " name = '".trim($txtName)."', ";
$query .= " position = '".trim($txtPosition)."', ";
$query .= " major = '".trim($txtMajor)."', ";
$query .= " room = '".trim($txtRoom)."', ";
$query .= " tel = '".trim($txtTel)."', ";
$query .= " email = '".trim($txtEmail)."', ";
$query .= " photo = '".trim($fileFullName)."', ";
$query .= " note1 = '".trim($txtNote1)."', ";
$query .= " note2 = '".trim($txtNote2)."' ";
$query .= " WHERE s_idx = '".$txtIdx."' ";

$result = mysqli_query($conn,$query);
if($result) {
//if(@exec("cp $fileFullNameTemp $dest")!=0){ // linux
if(move_uploaded_file($fileFullNameTemp, $dest)) { // window
unlink($fileFullNameTemp); // 임시파일 삭제
unlink($beforePhoto); // 기존 파일 삭제
} else {
echo "<script>alert(`파일입력 오류`);</script>";
//break;
echo "<script>history.back();</script>";
}
echo "<script>alert('수정에 성공 하였습니다.');</script>";
echo "<script> location.replace('/html/01_about/10_in.php?subPage=$subPage&txtIdx=".$txtIdx."');</script>";
} else {
echo "<script>alert('수정에 실패 하였습니다.');</script>";
unlink($fileFullNameTemp); // 임시파일 삭제
echo "<script>history.back();</script>";
}
}

// DELETE
if($txtMode == "DEL") {
$query = "";
$query .= " DELETE FROM t_teacher2 WHERE s_idx = '".$txtIdx."' ";
$result = mysqli_query($conn,$query);

if($result) {
unlink($beforePhoto); // 기존 파일 삭제
echo "<script>alert('삭제에 성공 하였습니다.');</script>";
echo "<script> location.replace('/html/01_about/$rootPage?subPage=$subPage');</script>";
} else {
echo "<script>alert('삭제에 실패 하였습니다.');</script>";
echo "<script>history.back();</script>";
}
}
?>

Total
Today
Yesterday
최근에 올라온 글
«   2025/05   »
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