다중 파일 업로드 처리 모듈이 필요해 졌다.
오랜만에 만져보는 php.
웬지 낯설다~~
풀소스를 올리진 않는다.
필요한 부분은 어느정도 노력해서 만들어야 하지 않겠는가~~
write.html
var img_cnt = '';
function ImageUploader(){
if(img_cnt < 50) {
eval('imgs_up' + img_cnt).innerHTML += "<input type=\"file\" name=\"ufile_name[]\" size=\"70\" onchange=\"javascript:ImageUploader()\" style=\"background-color: #f6f5ef; BORDER-RIGHT: #cdd2dd 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #cdd2dd 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; BORDER-LEFT: #cdd2dd 1px solid; PADDING-TOP: 1px; BORDER-BOTTOM: #cdd2dd 1px solid; HEIGHT: 18px\" /><div id='imgs_up" + (img_cnt+1) + "'></div>";
} else {
alert('최고 50개까지만 업로드 할 수 있습니다');
}
img_cnt++;
}
</script>
<input type="file" name="ufile_name[]" size="70" onchange="javascript:ImageUploader()" style="background-color: #f6f5ef; BORDER-RIGHT: #cdd2dd 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #cdd2dd 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; BORDER-LEFT: #cdd2dd 1px solid; PADDING-TOP: 1px; BORDER-BOTTOM: #cdd2dd 1px solid; HEIGHT: 18px" />
<div id='imgs_up'></div>
save.php
fixFilesArray($_FILES['ufile_name']);
$i=0;
foreach ($_FILES['ufile_name'] as $position => $ufile_name) {
// should output array with indices name, type, tmp_name, error, size
//var_dump($ufile_name);
if($ufile_name[name]) {
// 확장자 검사
if($ufile_name[name] && eregi(".gif$", $ufile_name[name])==false && eregi(".jpg$", $ufile_name[name])==false) {
errorMessage("이미지 파일은 gif, jpg만 가능합니다.");
exit;
}
$file_size[$i] = $ufile_name[size];
$tempImageName[$i] = $ufile_name[name];
//echo $tempImageName[$i] . "<BR>";
//exit;
//max 사이즈 체크
$POST_MAX_SIZE = ini_get('post_max_size');
$mul = substr($POST_MAX_SIZE, -1);
$mul = ($mul == 'M' ? 1048576 : ($mul == 'K' ? 1024 : ($mul == 'G' ? 1073741824 : 1)));
if ($_SERVER['CONTENT_LENGTH'] > $mul*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) {
errorMessage("업로드 용량이 초과 되었습니다.");
exit;
}
// 업로드
$array_upload = file_upload($root_file_path, $ufile_name, $tempImageName[$i], 3072);
$flag_file[$i] = $array_upload['exec_flag'];
$error_file[$i] = $array_upload['error_msg'];
$real_file_name[$i] = $array_upload['file_name'];
if ($error_file[$i]) {
print_r($error_file[$i]);
//errorMessage($error_file[$i]);
}
$i++;
}
}
}
lib_file.php
function file_upload($root_directory, $array_file, $file_name, $approve_size=0) {
if(eregi("/$", $root_directory) == false) {
$root_directory .= "/";
}
$return_array = array();
$image_origin = $array_file['origin'];
$image_name = $array_file['name'];
$image_size = $array_file['size'];
$image_type = $array_file['type'];
$image_temp = $array_file['tmp_name'];
if($image_size<=0 || $approve_size<($image_size/1024)) {
$return_array['error_msg'] = "파일의 크키가 없거나".$approve_size."KB 이상인 경우 업로드 할 수 없습니다.";
$return_array['exec_flag'] = false;
return $return_array;
}
//동일 파일 검사
if(file_exists($root_directory . "/" .$file_name)) {
$j = 0;
$strfilename = $file_name;
while(1) {
$j++;
if(!file_exists($root_directory . "/" .$strfilename))
break;
else {
$result = substr($file_name,0,strrpos($file_name,'.')); //파일이름
$result1 = substr($file_name,strrpos($file_name,'.')); //파일확장자
$strfilename = $result."_".$j.$result1;
}
}
} else {
$strfilename = $file_name;
}
$upload_file_name = $strfilename;
// 디렉토리 권한 변경
@chmod($root_directory, 0777);
if ($image_origin == "")
$image_origin = $image_temp;
//파일 업로드를 함
if(@move_uploaded_file($image_origin, $root_directory.$upload_file_name) == false) {
$return_array['error_msg'] = "파일 업로드에 실패하였습니다.";
$return_array['exec_flag'] = false;
return $return_array;
}
// 이미지 권한 변경
@chmod($root_directory.$upload_file_name, 0755);
$return_array['file_name'] = $upload_file_name;
$return_array['exec_flag'] = true;
return $return_array;
}