php 批量 上传

本文介绍了一个PHP实现的批量文件上传类,支持多种文件类型的上传,并具备文件大小限制等功能。该类通过简单的配置即可使用,适用于需要进行批量图片或文档上传的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?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、付费专栏及课程。

余额充值