인터넷정보

파일업로드 삭제 클래스

알 수 없는 사용자 2007. 10. 16. 16:26

제가 사용하고 있는 함수를 올려드리겠음돠..

음..첫번째 답변이자 자료인듯 한데..ㅡ.ㅡ? 제가 예전에 만들어서 지금도 유용하게 사용하고 있는 소스입니다..

음..이미지나 일반 파일도 구분없이 같이 올릴수 있으니 참조해서 사용하셔두 되구

그대로 사용하셔도 될겁니다.


보기 페이지에서는 이미지랑 일반 자료는 따로 처리됩니다.


간단한 주석들은 달아 놨구요.

그리고 그중에 의문점 등이 있으시면 글 남겨주시면 설명 드리겠습니다..

그럼..ㅡ.ㅡ;


------------------------- 기본 디비테이블 형태 ----------------------

CREATE TABLE contents_tbl (
  con_uid int(11) NOT NULL auto_increment,
  title varchar(100) NOT NULL default '',
  contents text,
  user_file varchar(100) default NULL,
  file_type char(1) default NULL,
  file_size int(11) default '0',
  reg_date date default NULL,
  PRIMARY KEY  (con_uid)
) TYPE=MyISAM COMMENT='컨텐츠정보 테이블';


------------------------ 함수부분 ---------------
#************************************************************************
#*   단일 Upload 파일 처리
#*   $POST_FILES        업로드한 파일 정보를 갖고 있는 배열
#*   $up_Path                저장할 경로
#*   $up_Var                처리할 변수명
#************************************************************************
function UpFile_Process($POST_FILES, $up_Path, $up_Var) {

 $file_size = $POST_FILES[$up_Var]["size"];
 if($file_size < 1) {
  Error("선택된 파일이 없거나 0Byte 이하의 파일입니다.\\n\\n확인후 다시 시도해 주세요.");
  return false;
 }

 $file_name = $POST_FILES[$up_Var]["name"];
 $tmp_file = explode(".", $file_name);
 $file_first = $tmp_file[0];
 $file_ext = strtolower($tmp_file[1]);

 if($file_ext == php3 || $file_ext == html || $file_ext == php || $file_ext == phtml || $file_ext == htm || $file_ext == pl || $file_ext == cgi) {
  Error("시스템 관련 파일들은 업로드 할수 없습니다.");
  return false;
 }
 if($file_ext == jpg || $file_ext == gif || $file_ext == bmp) $file_type = 'i';
 else $file_type = 'f';
 $file_name = ereg_replace(" ", "_", $file_name);
 $file_first = ereg_replace(" ", "_", $file_first);
 $tmp_file_name = $POST_FILES[$up_Var]["tmp_name"];

  // 업로드 폴더에 동일한 파일명이 있으면 파일이름을 바꿔서 올려줍니다.
  $i = 0;
 while (file_exists("$up_Path/$file_name")) {
  $i ++;
  $file_name = $file_first.$i.".".$file_ext;
 }

 $rRes = move_uploaded_file($tmp_file_name, $up_Path ."/". $file_name);
 @chmod($up_Path ."/". $file_name , 0777);

 $file_info[0] = $file_name; // 파일명을 반환합니다
 $file_info[1] = $file_size; // 파일사이즈를 반환합니다
 $file_info[2] = $file_type; // 파일타입을 반환합니다(파일타입은 이미지는 i 일반 파일은 f로 반환합니다. 여기는 다른걸로 변형도 가는하겠죠..*^^*
 // 예를 들면 swf파일은 s로 표현한다던지 해서 다르게 처리 가능할것입니다.
 return $file_info;
}


#************************************************************************
#*    파일삭제 function
#************************************************************************
function Del_File($up_Path, $up_Var)    {
 if(file_exists("$up_Path.$up_Var")) @unlink($up_Path.$up_Var);
}


#************************************************************************
#*    error display function
#*    에러 메세지를 ($msg)변수로 입력받아 에러메세지 출력후 현재페이지를
#*    뒤로 되돌리는 함수입니다.
#************************************************************************

  function Error($msg){
      echo("
      <script language='javascript'>
      <!--
          alert('$msg');
          history.back();
      //-->
      </script>
      ");
      exit();
  }
--------------------- 파일 업로드 부분 (html) ----------------------
이부분은 파일 내용을 저장할 파일입니다.

<form name='frm' method='post' action='업로드 및 디비 처리할 파일명' enctype='multipart/form-data'>
    제목 <input type='text' name='title' size='20'>
    내용 <textarea name='contents' rows='10' cols='10'></textarea>
    <input type='file' name='user_file' value='<?=$user_file;?>' class='input' size='30'>
</form>

<input type='submit' value='전송하기'>


-------------------- 파일 보이는 부분 처리 파일 ---------------------
<?
$sql = "select * from contents_tbl 이름 where con_uid=코드번호";
$result = mysql_query($sql);
$cnt = mysql_num_rows($result);
if($cnt > 0) {
  $row = mysql_fetch_object($result);
  $title = $row->title;
  $contents = nl2br($row->contents);
  $user_file = $row->user_file;
  $file_type = $row->file_type;
  $file_size = $row->file_size;
  $reg_date = $row->reg_date;
}
?>
<table>
  <tr>
    <td>제목</td>
    <td><?=$title;?></td>
  </tr>
  <tr>
    <td>내용</td>
    <td><?=$contents;?></td>
  </tr>
  <tr>
    <td>등록일</td>
    <td><?=$reg_date;?></td>
  </tr>
  <? if($user_file) { ?>
  <tr>
    <td> + 기존파일</td>
    <td>
    <?
    if($user_file) {
      if($file_type == 'i') {
        $photo_name = "이미지 저장경로/$user_file";
        $img_size = GetImageSize($photo_name); // 이미지일경우 이미지의 사이즈를 받아옵니다
        $img_width = $img_size[0]; // 이미지의 폭을 받아옵니다
        $img_height = $img_size[1]; // 이미지의 높이를 받아옵니다.
       
        // 이미지 폭을 200으로 제한한 경우입니다 이와 다른 이미지 사이즈일경우는 값을 주면 됩니다.
        if($img_width > 200) $img_src = "<img src='이미지경로/".$user_file."' border='0' width='200'>";
        else $img_src = "<img src='이미지경로/".$user_file."' border='0'>";
        echo"$img_src";
      } elseif($file_type == 'f') { // 파일일 경우
        echo"<a href='파일링크경로/$user_file' target='_blank'>$user_file</a>";
      }
    }
    ?>
    </td>
  </tr>
  <?
  }
  ?>
</table>


------------------------ 디비 처리 파일 ------------------------------------------
<?
// 디비 입력 부분입니다.
if($flag == "input") {
 # 등록일 생성
 $reg_date=date("Y-m-d");
  // 파일이 업되었을 경우 처리하는 부분입니다. 결과값은 $user_files 라는 배열에 받아옵니다. 파일저장경로는 뒤에 /까지 들어가야 합니다.
  if($user_file) $user_files = UpFile_Process($HTTP_POST_FILES, '파일저장경로', 'user_file');

  $sql = "insert into contents_tbl (title, contents, ";
  if($user_file) $sql .= "user_file, file_type, file_size";
  $sql .= " reg_date)
          values ('$title', '$contents', ";
  if($user_file) $sql .= "'$user_files[0]', '$user_files[2]', $user_files[1]";
  $sql .= "'$reg_date')";

  $location_url = '되돌아갈 경로';
}
// 디비 수정부분입니다.
elseif($flag == "update") {
  // 새로 파일 등록이 될경우
  if($user_file) {
    // 예전 파일은 지웁니다
    if($old_file) Del_File('파일경로',$old_file);
    $user_files = UpFile_Process($HTTP_POST_FILES, '파일경로', 'user_file');
  }
  $sql = "update contents_tbl set
          title='$title', contents='$contents'
          ";
  if($user_file) {
    # old_file delete
    $sql .= ",user_file='$user_files[0]', file_type='$user_files[2]', file_size=$user_files[1]";
  }
  $sql .= " where con_uid=$con_uid";
#  echo"$sql";
#  exit;
  // 되돌아갈 파일 경로(보기 페이지)
  $location_url = 'content_frm.php?flag=update&con_uid='.$con_uid;
}
// 삭제시
elseif($flag == "delete") {

  $sql2 = "select * from contents_tbl where con_uid=$con_uid";
  $result2 = mysql_query($sql2);
  $total2 = mysql_num_rows($result2);
  if($total2 > 0) {
    $row2 = mysql_fetch_object($result2);
    // 파일이 있으면 삭제합니다
    if($row2->user_file) Del_File('파일 경로', $row2->user_file);
  }
  $sql = "delete from contents_tbl where con_uid=$con_uid";
  // 되돌아갈 경로
  $location_url = 'content_code.php';

}
#echo"$sql";
#exit;
// 디비 처리
$result = mysql_query($sql);
// 이상없이 처리되었으면 지정된 경로로 돌아갑니다
if($result) {
  Ok_msg('이상없이 처리되었습니다.',$location_url);
}
elseif(!$result) {
  Error('처리중 오류가 발생했습니다');
}



반응형

'인터넷정보' 카테고리의 다른 글

session_save_path() 2  (0) 2007.10.16
session_save_path() 2  (0) 2007.10.16
디렉토리..class.sh_dir_cls.inc  (0) 2007.10.16
디렉토리..class.sh_dir_cls.inc  (0) 2007.10.16
파일업로드 삭제 클래스  (0) 2007.10.16
문자열 내의 HTML 태그를 모두 없애는 방법  (0) 2007.10.16
문자열 내의 HTML 태그를 모두 없애는 방법  (0) 2007.10.16
파일네임 금지  (0) 2007.10.16
파일네임 금지  (0) 2007.10.16
mysql query 관련 class  (0) 2007.10.16