程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 經典php批量上傳源碼

經典php批量上傳源碼

編輯:關於PHP編程

這是從一個源碼包下載下來的,包括上傳頁面到類,方法簡單,只要把下面文件保存成相同的文件名就可以簡單實現文件批量上傳的功能了。  代碼如下 復制代碼

html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
<script type="text/javascript">
function Check(){
 //alert('dddd');
 for(i=1; i<9; i++){
  if(document.getElementById('v'+i).value == ''){
   document.getElementById('v'+i).name = 'uu';
  }
 }
}

</script>

</head>

<body>
<form name="upfile" action="uploade.php" method="post" enctype="multipart/form-data">
<input type="file" name="spic[]" id="v1" /><br/>
<input type="file" name="spic[]" id="v2" /><br/>
<input type="file" name="spic[]" id="v3" /><br/>
<input type="file" name="spic[]" id="v4" /><br/>
<input type="file" name="spic[]" id="v5" /><br/>
<input type="file" name="spic[]" id="v6" /><br/>
<input type="file" name="spic[]" id="v7" /><br/>
<input type="file" name="spic[]" id="v8" /><br/>
<input type="submit" name="sub" value="提交" onclick="return Check()" />
<input type="reset" name="res" value="重填" />
</form>
</body>
</html>

uploade.php文件

<?php
//print_r($_FILES['spic']);
header('Content-Type:text/html;charset=utf-8');
//if(@$_FILES['spic'])echo "ddddddddd";;
include('upFiles.css.php');
$upfile = new UploadFiles(array('filepath'=>'./upload','allowtype'=>array('php','bmp','gif','jpg','png'),'israndfile'=>true,'maxsize'=>'1000000'));

if($upfile ->uploadeFile('spic')){
 
 $arrfile = $upfile ->getnewFile();
 foreach($arrfile as $v){
  echo $v,"<br/>";
 }
 echo "上傳成功!";
}else{
 $err =  $upfile ->gteerror();
 if(is_array($err)){
  foreach($err as $v1){
   echo $v1,"<br/>";
  }
 }else{
  echo $err;
 }
 //var_dump($err);
}
//var_dump($upfile);
?>

upFiles.class.php上傳類

<?php

class UploadFiles{

 private $maxsize = '1000000'; //允許上傳文件最大長度
 private $allowtype = array('jpg','png','gif','jpeg');//允許上傳文件類型
 private $israndfile = true;//是否隨機文件名
 private $filepath;//上傳路徑
 private $originName;//上傳的源文件
 private $tmpfileName;//臨時文件名
 private $newfileName;//新文件名
 private $fileSize;//文件大小
 private $fileType;//文件類型
 private $errorNum = 0;//錯誤號
 private $errorMessg = array();//錯誤消息
  //對成員初始化
  function __construct($options = array()){
  foreach($options as $key=>$val){
   $key = strtolower($key);
   //查看傳進來的數組裡下標是否與成員屬性相同
   //print_r(array_keys(get_class_vars(get_class($this))));
   if(!in_array($key,array_keys(get_class_vars(get_class($this))))){ 
    continue;
   }else{
    $this->setOption($key,$val);
   }
  }
 }
 private function setOption($key,$val){
     $this->$key = $val;
  //echo $this->errorNum."<br>";
 }
 //檢查文件上傳路徑
 private function checkfilePath(){
 //echo $this->filepath;
  if(empty($this->filepath)){
   $this->setOption('errorNum',"-5");
   return false;
  }
  if(!file_exists($this->filepath) || !is_writable($this->filepath)){
   if(!@mkdir($this->filepath,0755)){
    $this->setOption('errorNum','-4');
    return false;
    }
  }
  return true;
 }
 //獲取錯誤信息
 private function getError(){
  $str = "上傳文件{$this->originName}出錯---";
  switch($this->errorNum){
   case 4;  $str .= "沒有文件被上傳";break;
   case 3;  $str .= "文件只被部分上傳";break;
   case 2;  $str .= "超過文件表單允許大小";break;
   case 1;  $str .= "超過php.ini中允許大小";break;
   case -1; $str .= "未允許的類型";break;
   case -2; $str .= "文件過大,不能超過".$this->maxsize."個字節";break;
   case -3; $str .= "上傳失敗";break;
   case -4; $str .= "建立文件上傳目錄失敗";break;
   case -5; $str .= "必須指定上傳路徑";break;
   default; $str .= "未知錯誤";
  }
  return $str."<br>";
 }
 //檢查文件類型
 private function checkfileType(){
 //echo $this->fileType;
  if(!in_array(strtolower($this->fileType),$this->allowtype)){
  $this->setOption('errorNum','-1');
   return false;
  }else{
   return true;
  }
 }
 //檢查文件大小
 private function checkfileSize(){
  if($this->fileSize > $this->maxsize){
   $this->setOption('errorNum','-2');
   return false;
  }else{
   return true;
  }
 }
 //處理隨機文件名稱
 private function prorandFile(){
  $ch = $this->israndfile;
  if($ch == 'true'){
   return true;
  }else{
   return false;
  }
 }
 //
 private function setFiles($name="",$tmp_name="",$size="",$error=""){
  //檢查上傳路徑
  if(!$this->checkfilePath()){
   //$this->errorMessg = $this->getError();
   return false;
  }
  //echo $error."<br>";
  if($error){
  $this->setOption('errorNum',$error);
   return false;
  }
  $arrstr   = explode('.',$name);
  $type     = end($arrstr);
  $this->setOption('originName',$name);
  $this->setOption('fileSize',$size);
  $this->setOption('fileType',$type);
  $this->setOption('tmpfileName',$tmp_name);
  return true;
 }
 //檢查是否有文件上傳
 function checkFile($formname){
  if(!@$_FILES[$formname]){
   $this->setOption('errorNum',4);
   return false;
  }else{
   return true;
  }
 }
 //上傳文件
 function uploadeFile($formname){
  if(!$this->checkFile($formname)){
   $this->errorMessg = $this->getError();
   return false;
  }
  $return   = true;
  $name     = @$_FILES[$formname]['name'];
  $tmp_name = @$_FILES[$formname]['tmp_name'];
  $size     = @$_FILES[$formname]['size'];
  $error    = @$_FILES[$formname]['error'];
  //$type     = $_FILES[$formname]['type'];
  
  if(is_array($name)){
  
   $errors = array();
   for($i=0; $i<count($name); $i++){
    if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
     if(!$this->checkfileSize() || !$this->checkfileType()){
      $errors[] = $this->getError();
      $return = false;
     }
    }else{
     $errors[] = $this->getError();
     $return = false;
    }
    if(!$return) $this->setFiles();
   }
   if($return){
    $newfileN = array();
    for($i=0; $i<count($name); $i++){
     if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
      if(!$this->copyFile()){
       $errors[] = $this->getError();
       $return = false;
      }else{
       $newfileN[] = $this->newfileName;
      }
     }
     $this->newfileName = $newfileN;
    }
   }
   //print_r($errors);
   $this->errorMessg = $errors;
   //echo $errors;
   return $return;
  }else{
   if($this->setFiles($name,$tmp_name,$size,$error)){
    $return = true;
    if($error) var_dump($error);
    
    if($this->checkfileSize() && $this->checkfileType()){
     
    }else{
     $return = false;
    }
   }else{
    $return = false;
   }
   if(!$return){
    $this->errorMessg = $this->getError();
   }
   return $return;
  }
 }
 //獲取上傳後的文件名
 function getnewFile(){
   return $this->newfileName;
 }
 //把文件拷貝到指定的路徑
 function copyFile(){
  $filepath = rtrim($this->filepath,'/')."/";
  if(!$this->errorNum){
   if($this->prorandFile()){
     $this->newfileName = date('Ymdhis').rand(1000,9999).".".$this->fileType;
    }else{
     $this->newfileName = $this->originName;
    }
   if(!move_uploaded_file($this->tmpfileName,$filepath.$this->newfileName)){
    $this->setOption('errorNum',-3);
    return false;
   }else{
    return true;
   }
  }else{
   return false;
  }
 }

 //上傳錯誤後返回的消息
 function gteerror(){
    $err = $this->errorMessg;
  return $err;
 }
 }

 

?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved