YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > PHP
검색
멤버이름    오토
비밀번호 
 

다중업로드만들기

페이지 정보

작성자 MintState 댓글 0건 조회 14,483회 작성일 08-10-28 15:31

본문

다중업로드만들기

쿼리문 부분만 수정해서 사용하시면 됍니다.
파일 이름은 $file_name 이고 저장된 경로와 같은 있는 것은 $s_file_name 입니다.
자바로 폼 추가 기능, 중복 파일이 있을 경우 timestamp 형식의 디렉토리 생성
php관련 파일 전송 제한, 파일 이름 중복 체크, 이미지 미리보기 비율 맞추기,용량 제한

1. 업로드 부분
<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
// 다중 업로드 
var total_image = 1; 
function add_upload(){ 
        if(total_image < 20){ 
                var objTbl = document.all["upload_file_table"]; 
                var objRow = objTbl.insertRow(); 
                var objCell = objRow.insertCell(); 
                objCell.innerHTML += "<input type='file' name='upload_file["+total_image+"]' size='25'  onMouseover=\"image_preview(this);\"><br>"; 
        } 
        total_image++; 
} 

// 이미지 미리 보기 
var preview = new Image(); 
function image_preview(obj){ 
        var now_image = false; 
        var temp; 
        preview.src = obj.value; 
        // 지정된 폭, 높이 
        var imageWidth = 200; 
        var imageHeight = 150; 
        // 이미지 일 경우 미리 보기 
        if(obj.value.match(/(.jpg|.jpeg|.gif|.png)/)){ 
                preview_image.src = obj.value; 
                // 이미지 비율 
                var Yrate = preview.width/preview.height; 
                var Xrate = preview.height/preview.width; 
                if(preview.width > imageWidth||preview.height > imageHeight){ 
                        // 폭이 지정된 폭보다 클 경우                 
                        if(preview.width > imageWidth){ 
                                preview_image.width = imageWidth; 
                                preview_image.height = imageWidth * Xrate; 
                        } 
                        // 높이가 지정된 높이보다 클 경우 
                        if(preview.height > imageHeight){ 
                                preview_image.height = imageHeight; 
                                preview_image.width = imageHeight * Yrate; 
                        } 
                } 
        } 
        // 전체 이미지가 없을 경우 이미지 없음으로 
        for(var i=0; total_image>i; i++){ 
                temp = document.all.upload_test["upload_file["+i+"]"].value; 
                if(temp.match(/(.jpg|.jpeg|.gif|.png)/)){ 
                        now_image = true; 
                } 
        } 
        if(!now_image){ 
                preview_image.src = "image_preview.gif"; 
                preview_image.width = 120; 
                preview_image.height = 90; 
        } 
} 
//--> 
</script> 
<form name="upload_test" action="test_ok.php" method="post" enctype="multipart/form-data"> 
<a href="#none" onClick="add_upload();">add upload</a> 
<!-- 첨부파일 테이블 //--> 
<table id="upload_file_table"> 
        <tr> 
        <td> 
                <input type='file' name='upload_file[0]' size='25' onMouseover="image_preview(this);" value="test"><br> 
        </td> 
        </tr> 
</table>         

<input type="submit" value="전송"> 
</form> 
이미지 미리 보기 
<img src="image_preview.gif" name="preview_image" width="120" height="90"> 



2. 저장 부분
<? 
function upload_save($save_dir){ 
        global $setup,$HTTP_POST_FILES; 
        // 변수 설정 
        $thetime = time(); 
        if(!$setup[use_pds]) return false; 
        // 중복 체크 
        for($i=0; sizeof($HTTP_POST_FILES[upload_file][name])>$i; $i++){ 
                if($HTTP_POST_FILES[upload_file][name][$i]){ 
                        $file_names[$i] = $HTTP_POST_FILES[upload_file][name][$i]; 
                } 
        } 
        if($file_names) if(sizeof($file_names)!=sizeof(array_unique($file_names))) error("중복된 파일이 있습니다."); 
        // 업로드 
        for($i=0; sizeof($HTTP_POST_FILES[upload_file])>$i; $i++){ 
                $file = $HTTP_POST_FILES[upload_file][tmp_name][$i]; 
                $file_name = $HTTP_POST_FILES[upload_file][name][$i]; 
                $file_size = $HTTP_POST_FILES[upload_file][size][$i]; 
                $file_type = $HTTP_POST_FILES[upload_file][type][$i]; 
                // 크기 체크 
                if($file_size>$setup[max_upload]) error("3Mbyte 이상 업로드 하실 수 없습니다."); 
                if($file_size>0){ 
                        $s_file_name = $file_name; 
                        // 체크 
                        if(!is_uploaded_file($file)) error("업로드한 파일이 존재 하지 않습니다."); 
                        // 확장자 체크 
                        $no_names = array("php","html","inc","phtm","htm","shtm","ztx","dot","asp","cgi","pl"); 
                        $_file_name = explode(".",$file_name); 
                        for($i2=0; sizeof($_file_name)>$i2; $i2++){ 
                                if(in_array(strtolower($_file_name[$i2]),$no_names)) error("HTML, CGI 관련 언어는 올리실 수 없습니다."); 
                        } 
                        $file = eregi_replace("\\\\","\\",$file); 
                        $file_name = str_replace(" ","_",$s_file_name); 
                        $s_file_name = str_replace("-","_",$s_file_name); 

                        // 디렉토리를 검사함 
                        if(!is_dir($save_dir)) { 
                                @mkdir($save_dir,0777); 
                                @chmod($save_dir,0706); 
                        } 
                        // 파일 저장 
                        if(!file_exists($save_dir.$s_file_name)){ 
                                if(!move_uploaded_file($file,$save_dir.$s_file_name)) Error("파일업로드가 제대로 되지 않았습니다"); 
                                $file_name="data/$id/".$s_file_name;   
                                @chmod($file_name,0706); 
                                 
                        }else{        // 증복 파일이 있을때 
                                @mkdir($save_dir.$thetime,0777); 
                                if(!move_uploaded_file($file,$save_dir.$thetime."/".$s_file_name))  Error("파일업로드가 제대로 되지 않았습니다"); 
                                $file_name = $save_dir.$thetime."/".$s_file_name; 
                                @chmod($file_name,0706); 
                                @chmod($save_dir.$thetime,0707); 
                        } 
                        // 쿼리문 저장 
                } 
        } 
} 

// 에러 함수 
function error($message){ 
        echo "$message"; 
        exit; 
} 

// 셋업 
$setup[use_pds] = 1; // 자료실 기능 사용 
$setup[max_upload] = 1024 * 1024 * 3; // 업로드 용량 제한 
$id = "talkbox"; 
$save_dir = "data/".$id."/";        // 저장 폴더 
upload_save($save_dir); 
?>

댓글목록

등록된 댓글이 없습니다.

Total 165건 7 페이지
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2024, YesYo.com MintState. ™