파일 업로드 클래스

사용 예시:upload.phprun())    {     echo  "업로드 실패".$upload->errmsg();    }}?>파일 업로드
    
업로드 클래스 upload.class.php'이 형식 파일 을 업로드 할 수 없습니다',                             2=>'디 렉 터 리 쓰기 불가',                             3=>'파일 이 이미 존재 합 니 다',                             4=>'이름 모 를 오류',                             5=>'파일 이 너무 커 요'                            );/*** 목적*파일 업로드**예*    $fileArr['file'] = $file;    $fileArr['name'] = $file_name;    $fileArr['size'] = $file_size;    $fileArr['type'] = $file_type;    // 업로드 할 수 있 는 파일 형식    $filetypes = array('gif','jpg','jpge','png');    // 파일 업로드 디 렉 터 리    $savepath = "/usr/htdocs/upload/";    // 최대 제한 없 음 0 무제 한    $maxsize = 0;    // 덮어 쓰기 0 허용 되 지 않 음  허락 하 다    $overwrite = 0;    $upload = new upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $maxsize);    if (!$upload->run())    {     echo   $upload->errmsg();    }** @author whxbb([email protected])* @version 0.1*/class upload{    var $file;    var $file_name;    var $file_size;    var $file_type;    /** 저장 이름*/    var $savename;    /** 경로 저장*/    var $savepath;    /** 파일 형식 한정*/    var $fileformat = array();    /** 덮어 쓰기 모드*/    var $overwrite = 0;    /** 파일 최대 바이트*/    var $maxsize = 0;    /** 파일 확장자*/    var $ext;    /** 오류 코드*/    var $errno;    /**     * 구조 함수     * @param$fileArr 파일 정보 배열'file'임시 파일 이 있 는 경로 및 파일 이름                                    'name'파일 이름 업로드                                    '크기'업로드 파일 크기                                    'type'업로드 파일 형식     * @param savename 파일 저장 이름     * @param savepath 파일 저장 경로     * @param fileformat 파일 형식 제한 배열     * @param overwriet 덮어 쓰기 1 허용 덮어 쓰기 0 금지     * @param maxsize 파일 최대 크기     */    function upload($fileArr, $savename, $savepath, $fileformat, $overwrite = 0, $maxsize = 0) {        $this->file = $fileArr['file'];        $this->file_name = $fileArr['name'];        $this->file_size = $fileArr['size'];        $this->file_type = $fileArr['type'];        $this->get_ext();        $this->set_savepath($savepath);        $this->set_fileformat($fileformat);        $this->set_overwrite($overwrite);        $this->set_savename($savename);        $this->set_maxsize($maxsize);    }    /** 업로드  */    function run()    {        /** 파일 형식 검사*/        if (!$this->validate_format())        {            $this->errno = 1;            return false;        }        /** 디 렉 터 리 를 쓸 수 있 는 지 확인*/        if(!@is_writable($this->savepath))        {            $this->errno = 2;            return false;        }        /** 덮어 쓰 기 를 허용 하지 않 으 면 파일 이 존재 하 는 지 확인*/        if($this->overwrite == 0 && @file_exists($this->savepath.$this->savename))        {            $this->errno = 3;            return false;        }        /** 크기 제한 이 있 으 면 파일 이 제한 을 초과 하 는 지 확인*/        if ($this->maxsize != 0 )        {            if ($this->file_size > $this->maxsize)            {                $this->errno = 5;                return false;            }        }        /** 파일 업로드*/       if(!@copy($this->file, $this->savepath.$this->savename))       {            $this->errno = 4;            return false;       }       /** 임시 파일 삭제*/       $this->destory();       return true;    }    /**     * 파일 형식 검사     * @access protect     */    function validate_format()    {        if (!is_array($this->fileformat))  // 형식 제한 없 음            return true;       $ext = strtolower($this->ext);        reset($this->fileformat);        while(list($var, $key) = each($this->fileformat))        {            if (strtolower($key) == $ext)                return true;        }        reset($this->fileformat);        return false;    }    /**     * 파일 확장자 가 져 오기     * access public     */    function get_ext()    {        $ext = explode(".", $this->file_name);        $ext = $ext[count($ext) - 1];        $this->ext = $ext;    }    /**     * 파일 업로드 최대 바이트 제한 설정     * @param$maxsize 파일 크기(바이트)0:무제 한 표시     * @access public     */    function set_maxsize($maxsize)    {        $this->maxsize = $maxsize;    }    /**     * 덮어 쓰기 모드 설정     * @param 덮어 쓰기 모드 1:덮어 쓰기 허용 0:덮어 쓰기 금지     * @access public     */    function set_overwrite($overwrite)    {        $this->overwrite = $overwrite;    }    /**     * 업로드 가능 한 파일 형식 설정     * @param$fileformat 에서 업로드 할 수 있 는 파일 확장자 그룹     * @access public     */    function set_fileformat($fileformat)    {        $this->fileformat = $fileformat;    }    /**     * 저장 경로 설정     * @param$savepath 파일 저장 경로:"/"로 끝 납 니 다.     * @access public     */    function set_savepath($savepath)    {        $this->savepath = $savepath;    }    /**     * 파일 저장 이름 설정     * @savename 저장 이름 이 비어 있 으 면 시스템 에서 무 작위 파일 이름 을 자동 으로 생 성 합 니 다.     * @access public     */    function set_savename($savename)    {        if ($savename == '')  // 파일 이름 이 설정 되 어 있 지 않 으 면 무 작위 파일 이름 을 생 성 합 니 다.        {            srand ((double) microtime() * 1000000);            $rnd = rand(100,999);            $name = date('Ymdhis') + $rnd;            $name = $name.".".$this->ext;        } else {            $name = $savename;        }        $this->savename = $name;    }    /**     * 파일 삭제     * @param$file 에서 삭제 할 파일 이름     * @access public     */    function del($file)    {        if(!@unlink($file))        {            $this->errno = 3;            return false;        }        return true;    }    /**     * 임시 파일 삭제     * @access proctect     */    function destory()    {        $this->del($this->file);    }    /**     * 오류 메시지 받 기    * @access public      * @return error msg string or false     */    function errmsg()    {        global $UPLOAD_CLASS_ERROR;        if ($this->errno == 0)            return false;        else            return $UPLOAD_CLASS_ERROR[$this->errno];    }}?>

좋은 웹페이지 즐겨찾기