PHP图片上传

<? php
/* *
 *文件上传类 Upload
 *2006/3/16
 *@athor:waixin
 
*/
class  Upload {
    
    
const  UPLOAD_SECCUSS         =   " 上传成功!请进入下一步... "  ;
    
const  UPLOAD_FAILING         =   " 上传失败! "  ;
    
const  UPLOAD_ERRORS             =   " 上传图片失败,是图片文件为空、文件格式不正确,或是文件超过了限大小 "  ;
    
const  NOT_UPLOAD_FILE         =   " 不是上传的文件,你想干嘛!! "  ;
    
var   $id  ;     // id关联编号 
     var   $dirStyle   =   0  ;  // 设置文件上传目录方式0:mdir方式 ;1 :mdir_YM 方式 ; 2:mdir_YM_D 方式
     var   $size  ;      // 文件大小 单位:字节
     var   $type  ;       // 文件类型
     var   $path  ;     // 保存回路径
     var   $upfile  ;   // 上传文件数组
    //var $name ;   //form中 "type=file" 输入框的name值

     var   $isVaild = false  ;   // 验证
     var   $isSuccess = false  ;       // 是否成功
    //var $newpath ;  // 已处理过的路径

     var   $newfilename  ;  // 已处理过的文件名

    
const  MY_DS   =   ' / ' ;   // 路径分隔符 通用的
    
    
function  __construct( $upfile , $path , $type = " image/pjpeg,image/jpg,image/jpeg,image/gif,image/x-png,image/png,image/bmp " , $size = 50000 ){
        
$this -> path  =   $path  ;
        
$this -> type  =   explode ( ' , ' , $type ) ;
        
$this -> size  =   $size  ;
        
$this -> upfile  =   $upfile  ;
    }
    
    
/* *
     *用id号关联文件
     
*/
    
function  setId( $id ){
        
$this -> id  =   $id  ;
    }
    
    
/* *
     *设置文件上传目录方式
     
*/
    
function  setDirStyle( $id = 1 ){
        
if ( $id   ==   1 ){
            
return  ;
        } 
else  {
            
$this -> dirStyle  =   2  ;
        }    
    }
    
    
/* *
     *验证文件是否可以上传
     
*/
    
function  vaild(){
        
foreach $this -> type  as   $value  ){
            
if $this -> upfile[ ' type ' ==   $value   &&   $this -> upfile[ ' size ' >   0   &&  
                
$this -> upfile[ ' size ' <=   $this -> size ){
                
$this -> isVaild  =   true  ;
                
return   true  ;
            }
        }
        
return   $this -> isVaild ;
    }
    
    
/* *
     *判断是否上传成功
     
*/
    
function  isSuccess(){
        
return   $this -> isSuccess ;
    }
    
    
/* *
     *分年月建立日录
     
*/
    
function  mdir_YM( $path ){
        
// $dir = date("Y-m") ;
         $dir   =   date ( " Ym " ) ;
        
$path   =   str_replace ( array ( ' / ' ) , self :: MY_DS , $path ) ;
        
if substr ( $path ,- 1 , 1 !=  self :: MY_DS ){
            
$path   .=  self :: MY_DS ;
        }
        
if ( !   file_exists ( $path . $dir  )){
            
if mkdir ( $path . $dir ) ){
                
$this -> path =   $path . $dir . self :: MY_DS ;
            }
        }
else {
            
$this -> path =   $path . $dir . self :: MY_DS ;
        }
    }
    
    
/* *
     *分年月/日建立日录
     
*/
    
function  mdir_YM_D( $path ){
        
// $dir = date("Y-m") ;
         $dir   =   date ( " Ym " ) ;
        
$subdir   =   date ( " d " ) ;
        
$path   =   str_replace ( array ( ' / ' ) , self :: MY_DS , $path );
        
        
if  (  substr ( $path ,- 1 , 1 !=  self :: MY_DS ){
            
$path   .=  self :: MY_DS ;
        }
        
        
$dirPath   =   $path . $dir  ;
        
$subDirPath   =   $dirPath . self :: MY_DS . $subdir  ;
        
        
if  ( !   file_exists $dirPath  )){
            
if  (  mkdir $dirPath  ) ){
                
if  ( file_exists ( $dirPath  )  &&   ! file_exists $subDirPath  )){
                    
if  ( mkdir $subDirPath  )){
                        
$this -> path =   $subDirPath . self :: MY_DS ;        
                    }
                }
            }
        } 
else   if  ( ! file_exists $subDirPath  )) {
            
if  ( mkdir $subDirPath  )){
                        
$this -> path =   $subDirPath . self :: MY_DS ;        
            }
        } 
else  {
            
$this -> path  =   $subDirPath . self :: MY_DS ;
        }
    }
    
    
    
/* *
     *根据路径创建目录
     *@param $path 带文件名的路和径
     
*/
    
static   function  mdirPath( $path ){
        
$thePath   =   str_replace ( array ( ' / ' ) , self :: MY_DS , $path );
        
$thePath   =   dirname ( substr_compare ( $thePath , self :: MY_DS , 0 , 1 ==   0   ?   substr ( $thePath , 1 :   $thePath  );
        
$sub   =   explode (self :: MY_DS , $thePath ) ;
        
$n   =   count ( $sub ) ;
        
$i   =   0  ;
        
$tempPath   =   '' ;
        
        
while ( $i   <   $n ){
            
$tempPath   .=   $sub [ $i ++ ] . self :: MY_DS  ;     
            
if  ( ! file_exists ( $tempPath )) {
                
if  ( !   mkdir ( $tempPath )) {
                    
return   false  ;
                } 
            }
        }
        
        
if ( $i   >=   $n ){
            
return   true ;
        }
    }
    
    
/* *
     *(static)
     *分年月/日建立日录
     
*/
    
static   function  sMdir_YM_D( $path ){
        
// $dir = date("Y-m") ;
         $dir   =   date ( " Ym " ) ;
        
$subdir   =   date ( " d " ) ;
        
$path   =   str_replace ( array ( ' / ' ) , self :: MY_DS , $path ) ;
        
        
if substr ( $path ,- 1 , 1 !=  self :: MY_DS ){
            
$path   .=  self :: MY_DS ;
        }
        
        
$dirPath   =   $path . $dir  ;
        
$subDirPath   =   $dirPath . self :: MY_DS . $subdir  ;
        
        
if  ( !   file_exists $dirPath  )){
            
if  (  mkdir $dirPath  ) ){
                
if  ( file_exists $dirPath  )  &&   ! file_exists $subDirPath  )){
                    
if  ( mkdir $subDirPath  )){
                        
return   $subDirPath . self :: MY_DS ;
                    } 
else  {
                        
return   ''  ;
                    }
                } 
else  {
                    
return   $subDirPath . self :: MY_DS ;
                }
            } 
else  {
                
return   ''  ;
            }
        }
else   if  ( ! file_exists $subDirPath  )){
                    
if  ( mkdir $subDirPath  )){
                        
return   $subDirPath . self :: MY_DS ;
                    } 
else  {
                        
return   ''  ;
                    }
        } 
else  {
            
return   $subDirPath . self :: MY_DS ;
        }
    }
    
    
/* *
     *返回文件路径名,不包括文件名
     
*/
    
function  getPath(){
        
return   $this -> path;
    }
    
    
/* *
     *返回文件保存的完整路径
     
*/
    
function  getFullPath(){
        
return  ( substr_compare ( $this -> path , self :: MY_DS , 0 , 1 !=   0   ?  self :: MY_DS . $this -> path  :   $this -> path) . $this -> newfilename;    
    }
    
    
/* *
     *产生新的文件名
     
*/
    
function  mfilename( $name ){
        
$names   =   explode ( " . " , $name );
        
$theId   =   ! empty ( $this -> id)  ?   $this -> id . ' _ '   :   ''  ;
        
$this -> newfilename =    $theId . uniqid ( rand ()) . " . " . $names [ count ( $names ) - 1 ];
    }
    
    
/* *
     *返回新的文件名
     
*/
    
function  getNewFilename(){
        
return   $this -> newfilename;
    }
    
    
/* *
     *开始上传
     
*/
    
function  doUpload(){
        
if ( $this -> vaild()){
            
if ( is_uploaded_file ( $this -> upfile[ ' tmp_name ' ])){
                
if ( $this -> dirStyle  ==   1 ){
                    
$this -> mdir_YM( $this -> path);
                } 
else   if ( $this -> dirStyle  ==   2 ) {
                    
$this -> mdir_YM_D( $this -> path);
                } 
else  {
                    
// $this->path = substr_compare($this->path,self::MY_DS,0,1) != 0 ? self::MY_DS.$this->path : $this->path ;
                }
                
                
$this -> mfilename( $this -> upfile[ ' name ' ]);
                
if  ( is_uploaded_file ( $this -> upfile[ ' tmp_name ' ])){
                    
if ( move_uploaded_file ( $this -> upfile[ ' tmp_name ' ] , $this -> path . $this -> getNewFilename())){
                        
$msg   =  self :: UPLOAD_SECCUSS ;
                        
$this -> isSuccess  =   true ;
                    }
else {
                        
$msg   =  self :: UPLOAD_FAILING ;
                    }
                }
                
            } 
else  {
                
$msg   =  self :: NOT_UPLOAD_FILE ;
            }
        }
else {
               
$msg   =  self :: UPLOAD_ERRORS .   round ( $this -> size / 1024 . " KB. "  ;
        }
        
return   $msg  ;
    }

    
}
?>
最近写的一个简单的图片文件上传类..呵呵,不大完善! 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值