实现多文件上传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类库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did29571