PHP实现的多文件上传类及用法示例,
本文实例讲述了PHP实现的多文件上传类及用法。分享给大家供大家参考,具体如下:
1、upFiles.css.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; } } ?>
2、使用方法
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); ?>
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>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP berasal pada tahun 1994 dan dibangunkan oleh Rasmuslerdorf. Ia pada asalnya digunakan untuk mengesan pelawat laman web dan secara beransur-ansur berkembang menjadi bahasa skrip sisi pelayan dan digunakan secara meluas dalam pembangunan web. Python telah dibangunkan oleh Guidovan Rossum pada akhir 1980 -an dan pertama kali dikeluarkan pada tahun 1991. Ia menekankan kebolehbacaan dan kesederhanaan kod, dan sesuai untuk pengkomputeran saintifik, analisis data dan bidang lain.

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

PHP tetap penting dalam proses pemodenan kerana ia menyokong sejumlah besar laman web dan aplikasi dan menyesuaikan diri dengan keperluan pembangunan melalui rangka kerja. 1.Php7 meningkatkan prestasi dan memperkenalkan ciri -ciri baru. 2. Rangka kerja moden seperti Laravel, Symfony dan CodeIgniter memudahkan pembangunan dan meningkatkan kualiti kod. 3. Pengoptimuman prestasi dan amalan terbaik terus meningkatkan kecekapan aplikasi.

Phphassignificantelympactedwebdevelopmentandextendsbeyondit.1) itpowersmajorplatformslikeworderpressandexcelsindatabaseIntions.2) php'SadaptabilityAldoStoScaleforlargeapplicationFrameworksLikelara.3)

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

Dalam PHP, gunakan kata kunci klon untuk membuat salinan objek dan menyesuaikan tingkah laku pengklonan melalui kaedah Magic \ _ _ _. 1. Gunakan kata kunci klon untuk membuat salinan cetek, mengkloning sifat objek tetapi bukan sifat objek. 2. Kaedah klon \ _ \ _ boleh menyalin objek bersarang untuk mengelakkan masalah menyalin cetek. 3. Beri perhatian untuk mengelakkan rujukan pekeliling dan masalah prestasi dalam pengklonan, dan mengoptimumkan operasi pengklonan untuk meningkatkan kecekapan.

PHP sesuai untuk pembangunan web dan sistem pengurusan kandungan, dan Python sesuai untuk sains data, pembelajaran mesin dan skrip automasi. 1.PHP berfungsi dengan baik dalam membina laman web dan aplikasi yang cepat dan berskala dan biasanya digunakan dalam CMS seperti WordPress. 2. Python telah melakukan yang luar biasa dalam bidang sains data dan pembelajaran mesin, dengan perpustakaan yang kaya seperti numpy dan tensorflow.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.