<?php
//업로드 폴더
$path = './upload/';

//파일이 정상적으로 서버까지 올라온 상태라면
$img_file = $_FILES['img']['tmp_name'];
if ($img_file)
{
#################
### 변수 정의 ###
#################

//그냥 파일명
$img_file_name = $_FILES['img']['name'];

//파일명 추출을 위한 배열 생성
$file_type_check = explode('.',$img_file_name);
//print_r($file_type_check);

//파일 확장자 체크
$file_type = $file_type_check[count($file_type_check)-1];
//echo $file_type;

//확장자를 제외한 파일명 추출
$i = 0;
while($i < count($file_type_check)-1){
$real_filename .= $file_type_check[$i];
$i++;
}
//echo $real_filename;


#######################################################
####### 파일 명에 숫자 붙여서 업로드 하는 형태 ########
#######################################################

//파일 존재 여부 체크
$exist_flag = 0;
if(file_exists($path.$real_filename.'.'.$file_type)){ //파일이 존재한다면
$i = 0;
while($exist_flag != 1){ //존재하지 않을때 까지 루프
if(!file_exists($path.$real_filename.'['.$i.'].'.$file_type)){ // 경로/파일명[$i].확장자 존재한다면
 $exist_flag = 1; // 존재함을 표시하고
 $img_file_name = $real_filename.'['.$i.'].'.$file_type; // 확인된 파일명으로 업로드 파일명 설정
}
$i++;
}

}
//파일 업로드
if(!@copy($img_file, $path.$img_file_name)) { echo("error"); }


#######################################################
####### 파일명을 업로드 시간으로 변경하는 형태 ########
#######################################################

//시분초.확장자
$img_file_name = date("YmdHis").'.'.$file_type;
if(!@copy($img_file, $path.$img_file_name)) { echo("error"); }

###################################################
####### 파일명에 업로드 시간을 붙이는 형태 ########
###################################################

//파일명_시분초.확장자
$img_file_name = $real_filename."_".date("YmdHis").'.'.$file_type;
if(!@copy($img_file, $path.$img_file_name)) { echo("error"); }

}


// 이건 간단한 업로드 형태이고,

// 최근 포털등의 업로드 형태는 가만... 보면
// 서버에 업로드 되었을때는 파일명 자체를 암호화(?) 등의 패턴 형태로 업로드 시키고,
// 업로드한 파일명을 따로 관리한다

// 즉 db 에 파일명 필드가
// 유저가 업로드한 파일명 || 실제 서버에 업로드 되어 있는 파일명
// 으로 구분해서 관리한다는 뜻이다.

// 위에 제시한 방식은 블로그 방문자의 요청에 의해
// 유저가 업로드 한 파일명을 컨트롤 하는 형태이다.

// 유저가 업로드한 파일명 || 실제 서버에 업로드 되어 있는 파일명 으로 관리하겠다고 하면
// 업로드 되는 파일명 자체를 md5 해서 쓰거나 str_replace(urlencode(파일명),'%','') 이런식으로 쓰는것도 나쁘지 아니한것 같다.

'PHP' 카테고리의 다른 글

Class 예문  (0) 2013.10.27
Class 사용법  (0) 2013.10.27
파일다운  (0) 2013.10.24
PHP 환경변수  (0) 2013.10.24
쿠키  (0) 2013.10.24
Posted by 초보용
,