PHP & Others

파일 업로드 함수

페이지 정보

본문

안녕하세요. 디망쉬입니다.<p>

제가 사용하는 함수입니다. 해당 함수로 넘어오는 $rename 변수는 게시판 관리자가 파일 이름 중복을 피할 때 사용할 덧붙일 이름이 들어가있는 겁니다. ;;

다 처리하면 각 각의 파일 이름과 파일 용량을<p>

/문자열/문자열 <p>

형태로 변수에 담은 뒤 return 시켜줍니다. 이걸 받아서 db 에 넣건 뭐하건 사용자 맘이고요.<p>

<pre>
<font size='2'>
# 파일 이름과 크기를 / 로 가공해서 넘기자. 물론 업로드된 파일도 옮겨준다.
function get_filename_size($rename) {
    # 첨부 파일 처리
    $upfile            = $_FILES['upfile'];
    $upfile_name    = $_FILES['upfile']['name'];
    $upfile_tmpname    = $_FILES['upfile']['tmp_name'];
    $upfile_size    = $_FILES['upfile']['size'];
    $upfile_type    = $_FILES['upfile']['type'];

    # 생성할 변수를 위해 0 으로 초기화
    $userfile['cnt']    = 0;
    $userfile['name']    = "";
    $userfile['size']    = "";

    # security extend
    $s_ext = (($upfile_type['0'] == "text/plain") || ($upfile_type['0'] == "text/html")) ? ".phps" : "";

    # 파일 이름 앞에 붙일 이름 생성하기.
    $headname = implode("_", $rename);
    # 이제 루프를 돌며 만들자.
    for( $i=0; $i<COUNT($upfile); $i++ ) {
        # 해당 파일이 존재하느냐?
        if( is_uploaded_file($upfile_tmpname["$i"]) && ($upfile_size["$i"] > 0) ) {
            # / 로 구분해서 파일명과 크기 넣기, 첨부 파일수 증가
            $userfile['name']    .= "/" . $headname . "_" . $upfile_name["$i"] . $s_ext;
            $userfile['size']    .= "/" . $upfile_size["$i"];
            $userfile['cnt']    += 1;

            # 파일명 강제 변환 샤샥
            $upfile_name["$i"]    = $headname . "_" . $upfile_name["$i"] . $s_ext;

            # 이동
            move_uploaded_file($upfile_tmpname["$i"], "디렉토리/{$upfile_name["$i"]}");
            chmod("디렉토리/{$upfile_name["$i"]}", 0644);
        }
    }

    return $userfile;
}
</font>
</pre>

---------------------------------------

copy대신 move_uploaded_file을 쓰는 이유는 뭐죠? 09/13 21:07:23 
 
영혼 보안상 안전합니다. copy 는 / 등에 접근이 가능하지만, move_uploaded_file 은 업로드 파일만 다루므로 안전합니다.

관련자료

등록된 댓글이 없습니다.
Today's proverb
해가 들면 어떻고, 바람이 불면 어떻고, 눈이 오면 어떠랴. 해가 들어주어도 고맙고, 바람이 불어주어도 고맙고, 눈이 와주어도 고마울 뿐. 그렇다, 고맙지 않은 것이 없다. 밤은 밤이어서 고맙고, 새벽은 새벽이어서 고맙고, 낮은 낮이어서 고맙다. 아, 고마운 삼라만상이여! (정채봉)