搜尋
首頁php教程php手册支持多文件上传php文件上传代码

我们下面是个文件图片上传类,调用方法 upfile($path = "./", $format = "", $maxsize = 0, $over = 0) :构造函数 参数(保存路径,上传格式,上传最大字节数,是否覆盖同名文件),如果你要上传多文件就foreach($_FILES as $key=>$val)再 $filear[] = $f->upload($key);//返回上传后文件名数组。

 */

 代码如下 复制代码

class upfile{
 //上传文件信息
 var $filename;
 // 保存名
 var $savename;
 // 保存路径
 var $savepath;
 // 文件格式限定,为空时不限制格式
 var $format = "";
 // 覆盖模式
 var $overwrite = 0;
 /* $overwrite = 0 时不覆盖同名文件
  * $overwrite = 1 时覆盖同名文件
  */
 //文件最大字节
 var $maxsize = 210000000;
 //文件扩展名
 var $ext;
 
 /* 构造函数
  * $path 保存路径
  * $format 文件格式(用逗号分开)
  * $maxsize 文件最大限制,0为默认值
  * $over 复盖参数
  */
 function upfile($path = "./", $format = "", $maxsize = 0, $over = 0){
  if(!file_exists($path)){
   $this->halt("指定的目录[ ".$path." ]不存在。");
  }
 
  if(!is_writable($path)){
   $this->halt("指定的目录[ ".$path." ]不可写。");
  }
  $path = str_replace("","/", $path);
  $this->savepath = substr($path, -1) == "/" ? $path : $path."/";//保存路径
 
  $this->overwrite = $over;//是否复盖相同名字文件
  $this->maxsize = !$maxsize ? $this->maxsize : $maxsize;//文件最大字节
  $this->format = $format;
 }
 
 /*
  * 功能:检测并组织文件
  * $form      文件域名称
  * $filename 上传文件保存名称,为空或者上传多个文件时由系统自动生成名称
  * $filename = 1,并上传多个同文件域名称文件时,则文件保存为原上传文件名称。
  */
 function upload($form, $filename = ""){
  if(!isset($_files[$form])){
   $this->halt("指定的文件域名称不存在。");
  }else{
   $filear = $_files[$form];
  }
 
  if(is_array($filear["name"])){//上传同文件域名称多个文件
   $outfile = array();//返回文件名称数组
   for($i = 0; $i     $ar["name"] = $filear["name"][$i];
    $ar["tmp_name"] = $filear["tmp_name"][$i];
    $ar["size"] = $filear["size"][$i];
    $ar["error"] = $filear["error"][$i];
   
    $this->getext($ar["name"]);//取得扩展名
    $this->set_savename($filename == 1 ? $ar["name"] : "");//设置保存文件名
    $outfile[] = $this->copyfile($ar);
   }
   return $outfile;
  }else{//上传单个文件
   $this->getext($filear["name"]);//取得扩展名
   $this->set_savename($filename);//设置保存文件名
   return $this->copyfile($filear);
  }
  return false;
 }
 
 /*
  * 功能:检测并复制上传文件
  * $filear 上传文件资料数组
  */
 function copyfile($filear){
 
  if($filear["size"] > $this->maxsize){
   $this->halt("上传文件 ".$filear["name"]." 大小超出系统限定值[".$this->maxsize." 字节],不能上传。");
  }
 
  if(!$this->overwrite && file_exists($this->savename)){
   $this->halt($this->savename." 文件名已经存在。");
  }
 
  if(!$this->chkext()){
   $this->halt($this->ext." 文件格式不允许上传。");
  }
 
  if(!copy($filear["tmp_name"], $this->savepath.$this->savename)){
   $errors = array(0=>"文件上传成功",
       1=>"上传的文件超过了 php教程.ini 中 upload_max_filesize 选项限制的值。 ",
       2=>"上传文件的大小超过了 html 表单中 max_file_size 选项指定的值。 ",
       3=>"文件只有部分被上传。 ",
       4=>"没有文件被上传。 ");
   $this->halt($errors[$filear["error"]]);
  }else{
   @unlink($filear["tmp_name"]);//删除临时文件
   return $this->savename;//返回上传文件名
  }
 }
 
 /*
  * 功能: 取得文件扩展名
  * $filename 为文件名称
  */
 function getext($filename){
  if($filename == "") return;
 
  $ext = explode(".", $filename);
 
  $this->ext = $ext[count($ext)-1];
 }
 
 /*
  * 功能:检测文件类型是否允许
  */
 function chkext(){
  if($this->format == "" || in_array(strtolower($this->ext), explode(",", strtolower($this->format)))) return true;
  else return false;
 }
 /*
  * 功能: 设置文件保存名
  * $savename 保存名,如果为空,则系统自动生成一个随机的文件名
  */
 function set_savename($savename = ""){
  if ($savename == "") { // 如果未设置文件名,则生成一个随机文件名
   srand ((double) microtime() * 1000000);
   $rnd = rand(100,999);
   $name = date('u') + $rnd;
   $name = $name.".".$this->ext;
  } else {
   $name = $savename;
  }
  $this->savename = $name;
 }
 
 /*
  * 功能:错误提示
  * $msg 为输出信息
  */
 function halt($msg){
  echo "注意:".$msg;
  exit;
 }
 
/*
*
*主要用来删除已上传的文件,不返回
*参数$file :文件路径
*/

function delete_file($file)
{
    if (file_exists($file))
    {
        $delete = chmod ($file, 0777);
        $delete = unlink($file);
        if(file_exists($file))
        {
            $filesys = eregi_replace("/","",$file);
            $delete = system("del $filesys");
            clearstatcache();
            if(file_exists($file))
            {
                $delete = chmod ($file, 0777);
                $delete = unlink($file);
                $delete = system("del $filesys");
            }
        }
        clearstatcache();
    }
}
 
 
}

/*
使用方法

* 文件上传类
 upfile($path = "./", $format = "", $maxsize = 0, $over = 0)  :构造函数 参数(保存路径,上传格式,上传最大字节数,是否覆盖同名文件)
 
 
 
 * 实例:
 


 
//上传单文件
  if(isset($_files["files"]))
  {
     $filear=array();
     $filear = $f->upload("files");//返回上传后文件名
  echo $filear;
 
  }
 


 
 

//上传多个不同文件域名称文件

 代码如下 复制代码
if(isset($_files){
 foreach($_files as $key=>$val)
  $filear[] = $f->upload($key);//返回上传后文件名数组
}


*/



教程网址:

欢迎收藏∩_∩但请保留本文链接。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能