php 批量 上传

<? php
/* *
*说明:               批量文件上传
*version             2.0
*@author             sanshi(叁石)
*QQ:                 35047205
*MSN:                 sanshi0815@tom.com
*Create              2007/5/11
*
*/
include_once ( dirname ( __FILE__ ) . " /FileIO.class.php " );
class  Upload{
   
// 设置文件上传的最大量
     var   $uploadFileFize   =   100 ;
    
var   $tempFileName   =   array ();
    
var   $uploadFileName   =   array ();
    
    
function  Upload()
    {
        
$this -> uploadFileFize  =   $this -> uploadFileFize * 1024 ;
    }
    
function  init( $fileField , $fileType = ' img ' )
    {
        
// 同意上传的类型
         $allowFile [ ' img ' =   array ( ' jpg ' , ' bmp ' , ' jpeg ' );
        
$allowFile [ ' file ' =   array ( ' rar ' , ' zip ' );
        
// 取得类别
         $fileType   =   strtolower ( $fileType );
        
if ( $fileType != ' img ' &&   $fileType != ' file ' $fileType = ' img ' ;
        
// 取得上传的文件属性
        //print_r($_FILES);

         $files      =   $_FILES [ $fileField ];
        
for  ( $i = 0 ; $i < count ( $files [ ' name ' ]); $i ++ )
        {
            
$fileName   =   $files [ ' name ' ][ $i ];  // 文件名
             if ( $fileName == "" continue ;
            
$this -> uploadFileName[]  =   $fileName ;
            
$fileTemp   =   $files [ ' tmp_name ' ][ $i ];  // 临时文件名
             $this -> tempFileName[]  =   $fileTemp  ;
            
$fileSize   =   $files [ ' size ' ][ $i ];    // 文件大小
            //取得文件后缀

             $this -> uploadFileType  =  FileIO :: getFileType( $fileName );
            
// 判断文件的大小
             if ( $fileSize   >   $this -> uploadFileFize)
            {
                goToError(
" 文件最大 {$this->uploadFileFize} k! {$fileName} 超大 " );
                
return   false ;
            }
            
// 判断文件类型是否符合
             if ( ! in_array ( $this -> uploadFileType , $allowFile [ $fileType ]))
            {
                goToError(
" {$fileName} 文件类型不符合要求 只能是  " . implode ( ' , ' , $allowFile [ $fileType ]));
                
return   false ;
            }
        }
        
return   true ;
    }
    
// 取得上传文件名
     function  getUploadFileName( $uploadFile )
    {
        
$name   =   "" ;
        
$name   =   date ( ' Y-m/ ' ) . date ( " Y,m,d,H,i,s " ) . " _ " . $uploadFile ;
        
return   $name ;
    }
    
// 上传执行
     function   exec ( $upLoadDir )
    {
        
// 设置错误数组
         $suc   =   array ();
        
// 处理目录字符串
         $upLoadDir   =   preg_replace ( ' ' , ' / ' , $upLoadDir );
        
// 判断是否有/
         if ( substr ( $upLoadDir , 0 ,- 1 ) != " / " $upLoadDir . ' / ' ;
        
// 判断目标文件是否为空
         if ( empty ( $this -> tempFileName))  return   false ;
        
        
for  ( $i = 0 ; $i < count ( $this -> tempFileName); $i ++ )
        {
            
// 创建目录 添加文件名
             $fileName   =   $this -> getUploadFileName( $this -> uploadFileName[ $i ]);
            
// 设置上传的物理路径
             $upLoadFile   =   $upLoadDir . $fileName ;
            
// 检查目录是否存在
             $rUpLoadDir   =   dirname ( $upLoadFile );
            
if ( ! FileIO :: isDirExists( $rUpLoadDir ))
            {
                
if ( ! FileIO :: createDir( $rUpLoadDir )) 
                {
                    goToError(
" 建立 {$rUpLoadDir} 目录失败! " );
                    
return   false ;
                }
            }
            
// 复值给目录默认文件
             $this -> uploadFileName[ $i =   $fileName ;
            
// 上传文件
              if (@ move_uploaded_file ( $this -> tempFileName[ $i ] , $upLoadFile ))
             {
                 
$suc []  =   $this -> uploadFileName[ $i ]; 
             }
        }
        
// 驱除数组里相同的值,如果同时上传了同一个文件,上传的时候将覆盖
         return   array_unique ( $suc );
    }
}
/*
此类作为一个多文件的长传类,就是一个文件,也要使用数组形式
返回上传成功的文件
此文件用了 FileIO 类里的,几个函数
现在放在下面方便大家以后移植使用
    //取得文件后缀
    function getFileType($fileName)
    {
        return end(explode('.',$fileName));
    }
    //建立目录
    function createDir($dirName)
    {
        //echo $dirName;exit();
        global $FILEERRORMSG;
        $dirName = str_replace("/","/",$dirName);
        $dirArr = explode('/',$dirName);
        $dirTemp = "";
        foreach( (array)$dirArr as $dir )
        {
            if( empty($dir) ) continue;
            $dirTemp.= $dir."/";
            if( !is_dir($dirTemp) )
            {
                if( !@mkdir($dirTemp,0777) )
                {
                    trigger_error($FILEERRORMSG[0],SystemExceptionType(2));
                    return false;
                }
            }
        }
        
        return true;
    }
    //检查目录是否存在
    function isDirExists( $dirName )
    {
        return file_exists( $dirName ) && is_dir( $dirName );
    }
*/
?>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值