파일 업로드 함수
컨텐츠 정보
- 17,813 조회
- 7 추천
- 목록
본문
안녕하세요. 디망쉬입니다.<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 은 업로드 파일만 다루므로 안전합니다.
제가 사용하는 함수입니다. 해당 함수로 넘어오는 $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
등록된 댓글이 없습니다.