정보 보관 ver1.0

멀티 첨부파일 업로드

James Wetzel 2012. 10. 16. 16:59

$file_obj = "attachments";

        $uploadDirectory = ROOT_PATH."/_images/profilePhoto/";

        $fileType = array ("application/x-msdownload", "text/html", "text/htm", "application/octet-stream" );//.exe, .html, .htm, .php

        

        //첨부파일 업로드

        printf($af->multiFileUpload($file_obj, $uploadDirectory, $fileType, $af));


//멀티 파일을 서버로 업로드 한다.

        function multiFileUpload($file_obj, $uploadDirectory, $fileType, $obj)

        {

            $message = "";

            //파일 객체가 전송되었는지 확인

            if(isset($_FILES[$file_obj]))

            {

                //전송된 파일의 객체 만큼 반복하면서

                foreach ($_FILES[$file_obj]["error"] as $key => $error) 

                {

                    //오류 없이 파일이 서버로 업로드 되었다면

                    if ($error == UPLOAD_ERR_OK)

                    {

                        $this->obj = $_FILES[$file_obj][$key];

                        $this->error = $_FILES[$file_obj]["error"][$key];

                        $this->type = $_FILES[$file_obj]["type"][$key];

                        $this->tmp = $_FILES[$file_obj]["tmp_name"][$key];

                        $this->name = $_FILES[$file_obj]["name"][$key];

                        $this->size = $_FILES[$file_obj]["size"][$key];

                    

                        //파일의 확장자를 확인한 후

                        if (!in_array($this->type, $fileType)) 

                        { 

                            //파일을 서버로 업로드 한다.

                            if(move_uploaded_file ($this->tmp, $uploadDirectory.$this->name))

                            {

                                $this->uploadResult = true;

                            }

                        

                            ////임시파일이 존재하는 경우 삭제

                            if (file_exists ($this->tmp) && is_file($this->tmp) ) 

                            { 

                                unlink ($this->tmp); 

                            }

                        }

                        else

                        {

                            $message = "[".$this->type."] 확장자는 업로드 할 수 없습니다.!";

                        }

                    }

                    else

                    {

                        $message = $obj->getErrorMessage($error);

                    }

                }

            }

            

            return $message;

        }

        

        

        

        //파일을 서버로 업로드시 발생한 오류 메세지를 얻는다.

        function getErrorMessage($error)

        {     

            switch ($error) 

            {

                case 1:

                    $message = "php.ini 파일의 upload_max_filesize 설정값을 초과함(업로드 최대용량 초과)";

                    break;

                case 2:

                    $message = "Form에서 설정된 MAX_FILE_SIZE 설정값을 초과함(업로드 최대용량 초과)";

                    break;

                case 3:

                    $message = "파일 일부만 업로드 됨";

                    break;

                case 4:

                    $message = "업로드된 파일이 없음";

                    break;

                case 6:

                    $message = "사용가능한 임시폴더가 없음";

                    break;

                case 7:

                    $message = "디스크에 저장할수 없음";

                    break;

                case 8:

                    $message = "파일 업로드가 중지됨";

                    break;

                default:

                    $message = "시스템 오류가 발생";

                    break;

            }

            return $message;

        }

728x90
반응형