<?php /* * upMoreFile(string $fname, string $fpath, string $ftype) 上传多文件处理 * string $fname 上传的表单里 file 名 * string $fpath 文件保存路径,保存路径请使用 '/' * string $ftype 设定上传文件的类型 * string $ftypeAdd 增加上传文件类型, 添加多个类型请用 ',' 分开 */ function upMoreFile( $fname, $fpath, $ftype='img', $ftypeAdd = '' ) { /* * 设置上传路径的数组 */ $uppath = array(); /* * 判断上传的文件是否是数组 */ if(is_array($_FILES[$fname]['tmp_name'])) { $utmp_name = $_FILES[$fname]['tmp_name']; $uerror = $_FILES[$fname]['error']; $uname = $_FILES[$fname]['name']; $num = count($_FILES[$fname]['tmp_name']); } else { $utmp_name = array($_FILES[$fname]['tmp_name']); $uerror = array($_FILES[$fname]['error']); $uname = array($_FILES[$fname]['name']); $num = 1; } /* * 循环处理上传文件 */ for ($i = 0; $i < $num; $i++) { // 循环处理 /* * 检查是否有上传错误 */ if(empty($utmp_name[$i])) { continue; } if($uerror[$i] > 0) { switch($uerror[$i]){ case "1": echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值"; return $uppath; case "2": echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值"; return $uppath; case "3": echo "文件只有部分被上传"; return $uppath; case "4": echo "没有文件被上传"; return $uppath; case "6": echo "找不到临时文件夹。"; return $uppath; case "7": echo "文件写入失败"; return $uppath; } } /* * 判断是否是通过 HTTP POST 方法传输 */ if( is_uploaded_file( $utmp_name[$i] ) ) { /* * 获取上传文件类型 */ $name = basename( $uname[$i] ); $type = explode( '.', $name ); $uptype = strtolower( $type[count( $type )-1] ); /* * $ftype 设定上传文件的类型,根据 $ftype 选择默认的正确文件类型 */ switch ($ftype) { case 'img': $typearr = array( 'jpg', 'png', 'gif', 'bmp', 'jpeg' ); break; case 'tar': $typearr = array( 'zip', 'rar', 'gz', 'tar' ); break; case 'off': $typearr = array('doc', 'xls', 'ppt'); break; } /* * string $ftypeAdd 增加上传文件类型, 将添加的类型加到已有数组里 */ if( $ftypeAdd != '') { $typeAdd = explode(',', $ftypeAdd); $typearr = array_merge($typeAdd, $typearr); } /* * 验证获取的类型是否存在于默认的类型,以及添加的类型中 */ if( !in_array( $uptype, $typearr ) ) { echo "<mce:script type="text/javascript"><!-- alert('输入的类型不正确') // --></mce:script>"; return $uppath; } /* * 设置保存路径及文件名 */ //生成指定的目录 $array_dir=explode("/",$fpath);//把多级目录分别放到数组中 $path = ''; foreach($array_dir as $value){ $path .= $value."/"; if(!file_exists($path)){ mkdir($path, 0777); } } $upfile = time(); $rand = rand(1, 1000); $upfilename = $fpath.$upfile.'_'.$rand.".".$uptype; /* * 复制文件到指定路径下 */ if( move_uploaded_file( $utmp_name[$i], $upfilename ) ) { $uppath[] = $upfilename; } else { echo "<mce:script type="text/javascript"><!-- alert('上传失败') // --></mce:script>"; return $uppath; } } else { return $uppath; } } // 循环处理结束 return $uppath; } ?>