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 은 업로드 파일만 다루므로 안전합니다.

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
절벽에서 떨어지고 있는 상황일지라도 아무것도 할 수 없는 것은 결코 아니다. 떨어지고 있으니까 하늘을 향해 날 수 있지 않은가? (로버트 슐러)