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
유쾌한 사람은 자기 일에만 몰두하는 사람이 아니다. 때론 자신의 일을 전부 제쳐놓고 타인의 문제에 전력을 쏟는 열정이 있는 사람이다. 타인에게 자신의 힘을 나누어주고 마음을 열어주는 것은 자신의 삶을 행복하게 만드는 방법이다.