好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

实现多文件上传php类 - php类库

实现多文件上传php类

多文件上传是PHP中的一个基础应用,反正PHPer都会遇到的问题,现在就介绍一个功能完善、强大的多文件上传类给大家吧,能用上这个类的地方会很多,代码如下:

<?php  class  Upload{    var   $saveName ; // 保存名     var   $savePath ; // 保存路径     var   $fileFormat  =  array ( 'gif' , 'jpg' , 'doc' , 'application/octet-stream' ); // 文件格式&MIME限定     var   $overwrite  = 0; // 覆盖模式     var   $maxSize  = 0; // 文件最大字节     var   $ext ; // 文件扩展名     var   $thumb  = 0; // 是否生成缩略图     var   $thumbWidth  = 130; // 缩略图宽     var   $thumbHeight  = 130; // 缩略图高     var   $thumbPrefix  =  "_thumb_" ; // 缩略图前缀     var   $errno ; // 错误代号     var   $returnArray =  array (); // 所有文件的返回信息     var   $returninfo =  array (); // 每个文件返回信息     // 构造函数   // @param $savePath 文件保存路径   // @param $fileFormat 文件格式限制数组   // @param $maxSize 文件最大尺寸   // @param $overwriet 是否覆盖 1 允许覆盖 0 禁止覆盖     function  Upload( $savePath ,  $fileFormat = '' , $maxSize  = 0,  $overwrite  = 0) {     $this ->setSavepath( $savePath );     $this ->setFileformat( $fileFormat );     $this ->setMaxsize( $maxSize );     $this ->setOverwrite( $overwrite );     $this ->setThumb( $this ->thumb,  $this ->thumbWidth, $this ->thumbHeight);     $this ->errno = 0;   }  // 上传   // @param $fileInput 网页Form(表单)中input的名称   // @param $changeName 是否更改文件名     function  run( $fileInput , $changeName  = 1){     if (isset( $_FILES [ $fileInput ])){      $fileArr  =  $_FILES [ $fileInput ];      if ( is_array ( $fileArr [ 'name' ])){ //上传同文件域名称多个文件        for ( $i  = 0;  $i  <  count ( $fileArr [ 'name' ]);  $i ++){        $ar [ 'tmp_name' ] =  $fileArr [ 'tmp_name' ][ $i ];        $ar [ 'name' ] =  $fileArr [ 'name' ][ $i ];        $ar [ 'type' ] =  $fileArr [ 'type' ][ $i ];        $ar [ 'size' ] =  $fileArr [ 'size' ][ $i ];        $ar [ 'error' ] =  $fileArr [ 'error' ][ $i ];        $this ->getExt( $ar [ 'name' ]); //取得扩展名,赋给$this->ext,下次循环会更新         $this ->setSavename( $changeName  == 1 ?  ''  :  $ar [ 'name' ]); //设置保存文件名         if ( $this ->copyfile( $ar )){         $this ->returnArray[] =   $this ->returninfo;       } else {         $this ->returninfo[ 'error' ] =  $this ->errmsg();         $this ->returnArray[] =   $this ->returninfo;       }      }       return   $this ->errno ?  false :  true;     } else { //上传单个文件        $this ->getExt( $fileArr [ 'name' ]); //取得扩展名        $this ->setSavename( $changeName  == 1 ?  ''  :  $fileArr [ 'name' ]); //设置保存文件名        if ( $this ->copyfile( $fileArr )){        $this ->returnArray[] =   $this ->returninfo;      } else {        $this ->returninfo[ 'error' ] =  $this ->errmsg();        $this ->returnArray[] =   $this ->returninfo;      }       return   $this ->errno ?  false :  true;     }      return  false;    } else {      $this ->errno = 10;      return  false;    }   }  // 单个文件上传   // @param $fileArray 文件信息数组     function  copyfile( $fileArray ){     $this ->returninfo =  array ();     // 返回信息      $this ->returninfo[ 'name' ] =  $fileArray [ 'name' ];     $this ->returninfo[ 'md5' ] = @md5_file( $fileArray [ 'tmp_name' ]);     $this ->returninfo[ 'saveName' ] =  $this ->saveName;     $this ->returninfo[ 'size' ] = number_format( ( $fileArray [ 'size' ])/1024 , 0,  '.' ,  ' ' ); //以KB为单位      $this ->returninfo[ 'type' ] =  $fileArray [ 'type' ];     // 检查文件格式      if  (! $this ->validateFormat()){      $this ->errno = 11;      return  false;    }     // 检查目录是否可写      if (!@ is_writable ( $this ->savePath)){      $this ->errno = 12;      return  false;    }     // 如果不允许覆盖,检查文件是否已经存在      //if($this->overwrite == 0 && @file_exists($this->savePath.$fileArray['name'])){      // $this->errno = 13;      // return false;      /

查看更多关于实现多文件上传php类 - php类库的详细内容...

  阅读:45次