간단하게 올리고 db에 저장할 수 있도록 문자열로 반환하는 소스입니다.
이대로 사용해도 되고 적당히 변경해서 사용해도 좋습니다.
업로드 폼에 파일명은 upfile[] 로 하면 알아서 처리합니다.
<form name="f" method="POST" action="up.php" enctype="multipart/form-data">
<input type="file" name="upfile[]" />
<input type="file" name="upfile[]" />
<input type="submit" value="upload" />
</form>
// 임시 파일명 생성
function rand_str(){
$str = "";
$alp = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
for( $i=0; $i < 4; $i++ ){
$str .= $alp[rand(0,25)];
}
list($usec, $sec) = explode(" ", microtime());
$str .= date('ms') . str_replace("0.","",(string)(float)$usec); // 분초 . 마이크로타임
return $str;
}
// 파일명 확장자 배열로 반환
function get_filename($fname){
$fext = array_pop(explode('.', $fname)); // 확장자
$fname = basename($fpath, '.'.$fext); // 파일명
$return = array($fname,$fext);
return $return;
}
// 업로드 폼으로 넘어온 $_FILES 내용이 있어야 함 name="upfile[]"
// 반환값 string : "경로/수정파일명|기존파일명"
function upload_file($uf){
$db_in_str = "";
$chk_files = false;
foreach ($_FILES["upfile"]["error"] as $error) if ($error == UPLOAD_ERR_OK) $chk_files = true;
if( $chk_files ){
$date_str = (string)date("Y/m/d/"); // 날짜 폴더
$ud = $uf . $date_str;
$uploads_dir = $_SERVER["DOCUMENT_ROOT"] . $ud;
@mkdir($uploads_dir, 0777, true); // 폴더 생성
if( is_dir($uploads_dir) ){
// multi upload start
foreach ($_FILES["upfile"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["upfile"]["tmp_name"][$key]; // 업로드된 임시 파일
$name = $_FILES["upfile"]["name"][$key]; // 원본 파일명
$tn = get_filename($name);
$rename = rand_str() . "." . $tn[1] ; // 수정 파일명 + 확장자
//$_FILES["upfile"]["rename"][$key] = $rename;
$muf = move_uploaded_file($tmp_name, $uploads_dir."/".$rename); // 파일 이동
if( $muf ){
// true = 파일 이동 성공
if( $key > 0 ) $db_in_str .= "||";
$db_in_str .= $ud.$rename."|".$name;
}else{
// false = 파일이동 실패
go("/","파일 업로드 실패");
}
}
}
}
}//if
return $db_in_str;
}
// 사용
$str = upload_file("/UPLOAD/board/"); // 반환값 : 업로드된 경로/파일명|원본파일면|| ......
// 출력확인
echo $str;
'프로그래밍 > PHP' 카테고리의 다른 글
XML Parser Return Array (0) | 2012.01.27 |
---|