첨부파일 글쓰기, 글수정, 글삭제 > 기술자료 | 해피정닷컴

첨부파일 글쓰기, 글수정, 글삭제 > 기술자료

본문 바로가기

사이트 내 전체검색

첨부파일 글쓰기, 글수정, 글삭제 > 기술자료

PHP 첨부파일 글쓰기, 글수정, 글삭제

페이지 정보


본문

첨부파일을 업로드하면 등록할때 파일명을 변경해서 저장합니다.
예를 들면 1510039241D.zip 이렇게
 

1. 작성  write.php
<form name="hwrite" action="proc.php" method="post" enctype="multipart/form-data" style="padding:0px;">
    <input type="hidden" name="idx" value="<?php echo $idx; ?>" />
    <input type="hidden" name="del" value="<?php echo $del; ?>" />
    <input type="hidden" name="wmode" value="<?php echo $wmode; ?>" />
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <td>파일</td>
            <td>
                <?php if ($file_name) { ?><img src="/data_device/<?php echo $file_name; ?>" width="130" border="0" bordet="0"><br />
                <input type="checkbox" name="chk_delete" value="y" />파일삭제시 클릭<br />
                <?php } ?>
                <input type="file" name="uploadedfile" value="" />
            </td>
        </tr>
    </table>
    <div style="text-align:right; padding:15px 15px 0 0;">
        <?php if ($wmode == "u") { ?><input type="image" src="img/btn_modify.gif" />
        <?php } else { ?><input type="image" src="img/btn_write_ok.gif" />
        <?php } ?> &nbsp;
        <a href="list.php"><img src="img/btn_list.gif" border="0" /></a>
    </div>
</form>
 
 

2. 저장  proc.php
<?php
include "_common.php";
include_once "../dbconfig.php";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";

/*if ($member['mb_level'] < 9 ) {
    echo "<script type='text/javascript'>";
    echo "    alert('관리자만 이용가능합니다.');";
    echo "    history.back();";
    echo "</script>";
}*/
 
$dbconn = mysql_connect("$mysql_host","$mysql_user","$mysql_password") or die("데이터베이스 연결에 실패하였습니다.");
mysql_select_db($mysql_db,$dbconn);
@mysql_query("set names utf8");   // 한글문제 생기면 주석 해제
 
$table_name = "테이블이름";
$tmstamp    = date("U");

$wmode  = $_POST['wmode'];
$idx  = $_POST['idx'];

if ($wmode == "" || $idx == "") {
    $wmode  = $_GET['wmode'];
    $idx  = $_GET['idx'];
}
 
$del = $_POST['del'];
if ($del == "") { $del = "n"; }
 
//$file_name = $_FILES['uploadedfile'];
$chk_delete = $_POST['chk_delete'];
 
$max_file_size  = 5024000;
$uploaddir = '../data/'; //서버에 저장될 디렉토리의 권한은 777로 해둔다.
$uptime = time(); // 서버에 업로드할 파일명
 
if ($wmode == "u") { // 수정 시작
    // 파일명을 가져온다.    
    $sql_file = "select file_name from ". $table_name ." where idx = '".$idx."' ";
    $result = sql_query($sql_file);
    $row = sql_fetch_array($result);
    $old_filename = $row['file_name'];
    
    /***************************************************************************
    /* 업로드할 파일이 있는지 먼저 체크 후 삭제할 파일이 체크되어 있는지 확인
    /* 삭제체크가 되어 있거나 있어도 새로 첨부하는 경우, DB정보 업데이트 후 서버에서 삭제
    /* chk_delete에 값이 들어있다면 체크가 된 것이다.
    ****************************************************************************/
    //////////////////////파일 업로드 처리////////////////////////////
    $filename = $_FILES['uploadedfile']['name'];
    $filesize = $_FILES['uploadedfile']['size'];
    $filetype = $_FILES['uploadedfile']['type'];
    if($filename != "") {
        
        // 기존 파일 삭제
        if($old_filename != "") {
            @unlink($uploaddir.$old_filename);
        }
        
        $chk_file = explode(".", $filename);
        $extension = $chk_file[sizeof($chk_file)-1];
        
        // 디비에 저장할 파일이름
        $instfile = $uptime.chr(rand(65,90)).".".$extension;
        $target_path = $uploaddir . $instfile;

        //업로드 허용 파일,용량 구분  
        if(($extension == "gif" || $extension == "jpg" || $extension == "jpeg" || $extension == "png") && ($filesize < $max_file_size)) {
    
            //echo "instfile = ". $instfile."<br>";
            //echo "target_path = ". $target_path."<br>";

            if ($_FILES['uploadedfile']['error'] > 0) {
                $errmsg = "에러코드: " . $_FILES['uploadedfile']['error'];
            } else {
                if (file_exists($target_path)) {
                    $errmsg = $filename." 이 이미 존재합니다.";
                } else {
                    move_uploaded_file($filename, $target_path);
                    @chmod($instfile,0606); // 파일에 권한 설정
                    
                    $sql = "update ". $table_name ." set
                        file_name = '".$instfile."' ,
                        del = '".$del."'
                        where idx = '".$idx."'
                    ";
                }
            }
        } else {
            $errmsg = "알 수 없는 파일입니다.";
        }
    } 
    //////////////////////파일 업로드 처리 끝///////////////////////////
    else {
        if($_POST['chk_delete'] == "y") {
            @unlink($uploaddir.$old_filename);
        }
     
        $sql = "update ". $table_name ." set
              file_name = '' ,
              del = '".$del."'
              where idx = '".$idx."'
        ";
    }


} else if ($wmode == "d") {
    $sql_file = "select file_name from ". $table_name ." where idx = '$idx' ";
    $result = mysql_query($sql_file);
    $row = mysql_fetch_array($result);
    $old_filename = $row['file_name'];
    
    if($old_filename != "") {
        @unlink($uploaddir.$old_filename);
    }
    
    $sql = "delete from ". $table_name ." where idx = '". $idx ."' " ;
    //echo $sql;
    //exit;


} else { // 쓰기 시작

    //////////////////////파일 업로드 처리////////////////////////////
    $filename = $_FILES['uploadedfile']['name'];
    $filesize = $_FILES['uploadedfile']['size'];
    if($filename != "") {    
        // 중복되지 않는 파일로 만든다
        $instfile = $uptime.chr(rand(65,90)).".".$extension;
        
        $chk_file = explode(".", $filename);
        $extension = $chk_file[sizeof($chk_file)-1];
        
        /*
        $filename_ori = $_FILES['uploadedfile']['name'];  // 업로드된 원본이름
        $filename_size = $_FILES['uploadedfile']['size']; // 저장될 파일사이즈
        */
        $target_path = $uploaddir . $instfile;
        
        //업로드 금지 파일,용량 구분  
        if(($extension == "gif" || $extension == "jpg" || $extension == "jpeg" || $extension == "png") && ($filesize < $max_file_size)) {
            if ($_FILES['uploadedfile']['error'] > 0) {
                $errmsg = "에러코드: " . $_FILES['uploadedfile']['error'];
            } else {
                if (file_exists($target_path)) {
                    $errmsg = $filename." 이 이미 존재합니다.";
                } else {
                    move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path);
                    chmod($instfile,0606); // 파일에 권한 설정
                    
                    $sql = "insert into ". $table_name ."
                        (idx, num, file_name, del) values
                        ('', '".$tmstamp."', '".$instfile."', 'n')
                    ";
                }
            }
        } else {
            $errmsg = "알 수 없는 파일입니다.";
            exit;
        }
    }
    //////////////////////파일 업로드 처리 끝///////////////////////////
    else {
        $sql = "insert into ". $table_name ."
            (idx, file_name, del) values
            ('', '', 'n')
        ";
    }

}

//echo "sql => $sql <br>";
//exit;

//에러 메시지 처리
if($errmsg == "") {  
$result = sql_query($sql);
//mysql_query($sql);
//mysql_query($sql) or dbError(mysql_error());
echo mysql_error();
mysql_close($dbconn);  // MySQL에 접속종료

if ($wmode == "u")
    show_msg("글을 수정했습니다.", "view.php?idx={$idx}");
elseif ($wmode == "d")
    show_msg("글을 삭제했습니다.", "list.php");
else
    show_msg("글을 등록했습니다.", "list.php?num={$tmstamp}");

function show_msg($msg, $url) {
    echo "<script language=\"JavaScript\">
    alert(\"{$msg}\");
    document.location.replace(\"{$url}\");
    </script>";
}

?>


참고자료
http://zzaps.tistory.com/52
https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=233041

댓글목록

등록된 댓글이 없습니다.


Total 195건 6 페이지
  • RSS
기술자료 목록
95
PHP   21856  2012-03-16 23:55 ~ 2014-12-28 00:00  
94
PHP   22934  2012-03-04 17:29  
93
PHP   21846  2012-03-04 17:09 ~ 2023-01-08 11:38  
92
PHP   27600  2012-03-01 21:47 ~ 2012-04-08 00:00  
91
PHP   15689  2012-02-11 08:05  
90
PHP   23707  2011-12-16 17:50 ~ 2017-12-01 23:10  
89
PHP   35548  2011-12-16 14:24  
88
PHP   14677  2011-12-16 11:56  
87
PHP   39986  2011-12-10 17:48 ~ 2011-12-17 00:00  
86
PHP   22284  2011-12-10 17:48  
85
PHP   18743  2011-11-28 08:46 ~ 2017-01-13 00:00  
84
PHP   15998  2011-08-15 20:08  
83
PHP   15459  2011-07-26 07:10  
열람
PHP   24798  2011-06-12 20:30 ~ 2024-02-28 09:43  
81
PHP   29472  2011-04-20 19:59  
80
PHP   22619  2011-03-27 21:51  
79
PHP   19642  2011-02-24 16:10 ~ 2021-11-23 09:25  
78
PHP   27869  2010-09-24 20:57  
77
PHP   17514  2010-08-25 11:34  
76
PHP   16143  2010-08-21 09:37 ~ 2014-10-06 00:00  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.