- <?php
- /**
- * FileUplaod class
- * 部分代码源自网络
- * 2010-3-23
- */
- class FileUpload {
- // 验证上传文件是否为规定大小
- private static function size($_formName = \'UploadFile\', $size = \'10M\') {
- $files = self::dealFiles($_FILES[$_formName]);
- $return = TRUE;
- foreach($files as $file){
- if ((int) $file[\'error\'] !== UPLOAD_ERR_OK){
- return TRUE;
- }
- $size = strtoupper($size);
- if ( ! preg_match(\'/[0-9]++[BKMG]/\', $size)){
- return FALSE;
- }
- switch (substr($size, -1)){
- case \'G\': $size = intval($size) * pow(1024, 3); break;
- case \'M\': $size = intval($size) * pow(1024, 2); break;
- case \'K\': $size = intval($size) * pow(1024, 1); break;
- default: $size = intval($size); break;
- }
- $return = ($return and ($file[\'size\'] <= $size));
- }
- return $return;
- }
- /**
- * 验证上传文件后缀 默认为图片类型
- * _formName string default UploadFile 表单元素name值
- * allowExt array|string 允许的后缀类型 可以为数组或者字符串
- * return bool 是否验证成功
- */
- public static function valid($_formName = \'UploadFile\', $_allowExt = array(\'jpeg\',\'gif\',\'png\',\'jpg\',\'bmp\'), $size = \'10M\') {
- if(! self::size($_formName,$size)){
- return false;
- }
- $return = TRUE;
- if(is_array($_FILES[$_formName][\'name\'])){
- foreach($_FILES[$_formName][\'name\'] as $_name){
- $_ext = pathinfo($_name,PATHINFO_EXTENSION);
- $return = ($return AND in_array($_ext, $_allowExt));
- }
- return $return;
- }else{
- $_ext = pathinfo($_FILE[$_formName],PATHINFO_EXTENSION);
- if(in_array($_ext, $_allowExt)){
- return TRUE;
- }
- return FALSE;
- }
- return FALSE;
- }
- /**
- * 保存上传文件
- * _formName string default UploadFile 表单元素name值
- * _savePath string default NULL 文件保存路径(默认当前路径./upload/目录)
- * _fileName string default NULL 文件保存名称 默认时间戳+原文件名
- * _chmode int default 0664 上传后的文件权限
- */
- public static function save($_formName = \'UploadFile\', $_savePath = NULL, $_fileName = NULL, $_chmode = 0664) {
- $file = \'\';
- $files = array();
- if(is_array($_FILES[$_formName][\'name\'])){
- $_fileName = \'\';
- $files = self::dealFiles($_FILES[$_formName]);
- $fileNames = array();
- foreach($files as $file){
- $fileNames[] = self::upload($file,$_savePath,$_fileName, $_chmode);
- }
- return $fileNames;
- }else{
- $file = $_FILES[$_formName];
- $fileName = self::upload($file,$_savePath,$_fileName, $_chmode);
- }
- return $fileName;
- }
- /**
- * 保存上传文件
- * 参数同save()
- */
- private static function upload($file = array(), $_savePath = NULL, $_fileName = NULL, $_chmode = 0664) {
- if(emptyempty($file)){ return FALSE;}
- if($_fileName == NULL){
- $_fileName = time().rand(1,100).$file[\'name\'];
- }
- $_fileName = preg_replace(\'/\\s+/\', \'_\', $_fileName);
- if ($_savePath == NULL){
- $_savePath = \'./upload/\';
- }
- self::mkdirs($_savePath,0777);
- $_savePath = rtrim($_savePath, \'/\').\'/\';
- if ( ! is_writable($_savePath)){
- throw new Exception(\'The directory \'.$_savePath.\' is not_writable !\');
- }
- if (is_uploaded_file($file[\'tmp_name\']) AND move_uploaded_file($file[\'tmp_name\'], $filename = $_savePath.$_fileName)){
- if ($chmod !== FALSE){
- chmod($filename, $_chmod);
- }
- return $filename;
- }else{
- throw new Exception(\'Move uploaded File Error!\'.$file[\'tmp_name\']);
- }
- return FALSE;
-
- }
- // 创建目录树
- public static function mkdirs($dir, $mode = 0777) {
- if (!is_dir($dir)) {
- self::mkdirs(dirname($dir), $mode);
- return mkdir($dir, $mode);
- }
- return TRUE;
- }
- // 多文件上传 数组格式转换
- private static function dealFiles(&$files) {
- $fileArray = array();
- $count = count($files[\'name\']);
- $keys = array_keys($files);
- for ($i=0; $i<$count; $i++) {
- foreach ($keys as $key) {
- if(emptyempty($files[$key][$i])){
- unset($fileArray[$i][$key]);
- unset($fileArray[$i][\'error\']);
- }else{
- $fileArray[$i][$key] = $files[$key][$i];
- }
- }
- }
- // 剔除为空的元素
- foreach($fileArray as $key=>$value){
- if(emptyempty($value)){
- unset($fileArray[$key]);
- }
- }
- return $fileArray;
- }
- }
- // 测试
- if( !emptyempty($_FILES[\'UploadFile\'])){
- $allowExt = array(\'jpg\');
- if(FileUpload::valid(\'UploadFile\', $allowExt)){
- $test = FileUpload::save(\'UploadFile\');
- print_r($test);
- }else{
- echo \'error\';
- }
- }
- ?>
- <form action="#" method="post" enctype="multipart/form-data">
- <input type="file" name="UploadFile[]"><br/>
- <input type="file" name="UploadFile[]"><br/>
- <input type="file" name="UploadFile[]"><br/>
- <input type="file" name="UploadFile[]"><br/>
- <input type="submit" value="sub">
- </form>
- <?php
- /**
- * FileUplaod class
- * 部分代码源自网络
- * 2010-3-23
- */
- class FileUpload {
- // 验证上传文件是否为规定大小
- private static function size($_formName = \'UploadFile\', $size = \'10M\') {
- $files = self::dealFiles($_FILES[$_formName]);
- $return = TRUE;
- foreach($files as $file){
- if ((int) $file[\'error\'] !== UPLOAD_ERR_OK){
- return TRUE;
- }
- $size = strtoupper($size);
- if ( ! preg_match(\'/[0-9]++[BKMG]/\', $size)){
- return FALSE;
- }
- switch (substr($size, -1)){
- case \'G\': $size = intval($size) * pow(1024, 3); break;
- case \'M\': $size = intval($size) * pow(1024, 2); break;
- case \'K\': $size = intval($size) * pow(1024, 1); break;
- default: $size = intval($size); break;
- }
- $return = ($return and ($file[\'size\'] <= $size));
- }
- return $return;
- }
- /**
- * 验证上传文件后缀 默认为图片类型
- * _formName string default UploadFile 表单元素name值
- * allowExt array|string 允许的后缀类型 可以为数组或者字符串
- * return bool 是否验证成功
- */
- public static function valid($_formName = \'UploadFile\', $_allowExt = array(\'jpeg\',\'gif\',\'png\',\'jpg\',\'bmp\'), $size = \'10M\') {
- if(! self::size($_formName,$size)){
- return false;
- }
- $return = TRUE;
- if(is_array($_FILES[$_formName][\'name\'])){
- foreach($_FILES[$_formName][\'name\'] as $_name){
- $_ext = pathinfo($_name,PATHINFO_EXTENSION);
- $return = ($return AND in_array($_ext, $_allowExt));
- }
- return $return;
- }else{
- $_ext = pathinfo($_FILE[$_formName],PATHINFO_EXTENSION);
- if(in_array($_ext, $_allowExt)){
- return TRUE;
- }
- return FALSE;
- }
- return FALSE;
- }
- /**
- * 保存上传文件
- * _formName string default UploadFile 表单元素name值
- * _savePath string default NULL 文件保存路径(默认当前路径./upload/目录)
- * _fileName string default NULL 文件保存名称 默认时间戳+原文件名
- * _chmode int default 0664 上传后的文件权限
- */
- public static function save($_formName = \'UploadFile\', $_savePath = NULL, $_fileName = NULL, $_chmode = 0664) {
- $file = \'\';
- $files = array();
- if(is_array($_FILES[$_formName][\'name\'])){
- $_fileName = \'\';
- $files = self::dealFiles($_FILES[$_formName]);
- $fileNames = array();
- foreach($files as $file){
- $fileNames[] = self::upload($file,$_savePath,$_fileName, $_chmode);
- }
- return $fileNames;
- }else{
- $file = $_FILES[$_formName];
- $fileName = self::upload($file,$_savePath,$_fileName, $_chmode);
- }
- return $fileName;
- }
- /**
- * 保存上传文件
- * 参数同save()
- */
- private static function upload($file = array(), $_savePath = NULL, $_fileName = NULL, $_chmode = 0664) {
- if(empty($file)){ return FALSE;}
- if($_fileName == NULL){
- $_fileName = time().rand(1,100).$file[\'name\'];
- }
- $_fileName = preg_replace(\'/\\s+/\', \'_\', $_fileName);
- if ($_savePath == NULL){
- $_savePath = \'./upload/\';
- }
- self::mkdirs($_savePath,0777);
- $_savePath = rtrim($_savePath, \'/\').\'/\';
- if ( ! is_writable($_savePath)){
- throw new Exception(\'The directory \'.$_savePath.\' is not_writable !\');
- }
- if (is_uploaded_file($file[\'tmp_name\']) AND move_uploaded_file($file[\'tmp_name\'], $filename = $_savePath.$_fileName)){
- if ($chmod !== FALSE){
- chmod($filename, $_chmod);
- }
- return $filename;
- }else{
- throw new Exception(\'Move uploaded File Error!\'.$file[\'tmp_name\']);
- }
- return FALSE;
- }
- // 创建目录树
- public static function mkdirs($dir, $mode = 0777) {
- if (!is_dir($dir)) {
- self::mkdirs(dirname($dir), $mode);
- return mkdir($dir, $mode);
- }
- return TRUE;
- }
- // 多文件上传 数组格式转换
- private static function dealFiles(&$files) {
- $fileArray = array();
- $count = count($files[\'name\']);
- $keys = array_keys($files);
- for ($i=0; $i<$count; $i++) {
- foreach ($keys as $key) {
- if(empty($files[$key][$i])){
- unset($fileArray[$i][$key]);
- unset($fileArray[$i][\'error\']);
- }else{
- $fileArray[$i][$key] = $files[$key][$i];
- }
- }
- }
- // 剔除为空的元素
- foreach($fileArray as $key=>$value){
- if(empty($value)){
- unset($fileArray[$key]);
- }
- }
- return $fileArray;
- }
- }
- // 测试
- if( !empty($_FILES[\'UploadFile\'])){
- $allowExt = array(\'jpg\');
- if(FileUpload::valid(\'UploadFile\', $allowExt)){
- $test = FileUpload::save(\'UploadFile\');
- print_r($test);
- }else{
- echo \'error\';
- }
- }
- ?>
- <form action="#" method="post" enctype="multipart/form-data">
- <input type="file" name="UploadFile[]"><br/>
- <input type="file" name="UploadFile[]"><br/>
- <input type="file" name="UploadFile[]"><br/>
- <input type="file" name="UploadFile[]"><br/>
- <input type="submit" value="sub">
- </form>
复制代码
|