广州睿东网络科技有限公司是国内最专业的香港空间,云主机,香港VPS,香港服务器租用提供商,专注为国内站长提供高速且稳定的香港空间,云主机,香港VPS,香港服务器租用,欢迎您的选购!
当前位置:首页 -> 云服务器 -> 香港空间

(实用篇)PHP实现的多文件上传类及用法示例

云服务器 34℃ 1895评论


更多学习视频分享

想要领取整套学习视频教程(包括更多的IT学习视频)的同学,可以加QQ 2084533608,加入时验证信息填:学习


小编推出另一个微信公众号“求职面试小助手”,提供给大家面试技巧,面试常见问题,面试经验等,与大家共分享,同学们可以长按识别二维码关注一下



代码如下:

以下是文章分享1群由于群人数已超过100,不能扫码进群,这个任务呢,就由小篇来拉你们进群了,扫描下面二维码,加小篇好友~

这篇文章主要介绍了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视频教程MySQL笔试题等诸多优质内容,最接地气重服务的本地微信平台!关注我们妥妥没错!

(广告合作联系QQ:2230304070

投诉
喜欢 (1895)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: