加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP多文件上传类,收藏版!

发布时间:2020-12-13 01:59:50 所属栏目:PHP教程 来源:网络整理
导读:《PHP多文件上传类,收藏版

《PHP多文件上传类,收藏版!》要点:
本文介绍了PHP多文件上传类,收藏版!,希望对您有用。如果有疑问,可以联系我们。

欢迎参与《PHP多文件上传类,收藏版!》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

PHP多文件上传类,收藏版!

文件名:test.php

<必修php

$Str='<form action="uploadfile.php必修Send=More" method="post" enctype="multipart/form-data">';

$Str.='文件上传1:<input type="file" name="PicPath[]" /><br>';

$Str.='文件上传2:<input type="file" name="PicPath[]" /><br>';

$Str.='文件上传3:<input type="file" name="PicPath[]" /><br>';

$Str.='文件上传4:<input type="file" name="PicPath[]" /><br>';

$Str.='文件上传5:<input type="file" name="PicPath[]" /><br>';

$Str.='文件上传6:<input type="file" name="PicPath[]" /><br>';

$Str.='<input type="submit" value="提交确认">';

$Str.='</form>';

echo $Str;

必修>

文件名:uploadfile.php

<必修php

$State=isset($_GET['Send'])必修trim($_GET['Send']):'';

if($State=='More')

{

require('./uploadfilemore.php');

//$FileData;//界说客户所上传的文件来源

$AffirmExtension=array('jpg','jpeg','gif','png');//界说我们所确认的有效扩展名有哪些

$UpFileSize=500*1024;//定义我们所上传文件的年夜小对其约束

$UpSeat='./uploadfile/';//定义上传文件的具体地位

$UpSubDir='images/';//界说上传文件的子目录

$UpLoadMore=new UpLoadMore($_FILES['PicPath'],$AffirmExtension,$UpFileSize,$UpSeat,$UpSubDir);

$Result=$UpLoadMore->FileUpLoad();

print_r($Result);

}

必修>

文件名:uploadfilemore.php

<必修php

/*

文件上传时必要注意的具体事项有:

1.文件扩大名

2.文件尺寸

3.上传的地位

4.上传的子目次

5.上传的文件名字

6.客户所上传的文件数据起源

*/

class UpLoadMore

{

private $FileData;//界说客户所上传的文件来源

private $AffirmExtension;//界说我们所确认的有效扩展名有哪些

private $UpFileSize;//定义我们所上传文件的年夜小对其约束

private $UpSeat;//定义上传文件的具体地位

private $UpSubDir;//界说上传文件的子目录

private $ValidFileData;//界说客户所上传的有效的文件数据

private $SelectUPLoadState;//请客户选择来确认是否一有错则全部不上传1,还是可以部门上传2

public function __construct($FileData,$UpSubDir,$SelectUPLoadState=2)

{

$this->FileData=$FileData;

$this->AffirmExtension=$AffirmExtension;

$this->UpFileSize=$UpFileSize;

$this->UpSeat=$UpSeat;

$this->UpSubDir=$UpSubDir;

$this->SelectUPLoadState=$SelectUPLoadState;

}

//外部调用返回成果

public function FileUpLoad()

{

//验证以后是否有文件上传

if(!$this->CheckFileIsNull())

{

$Back=array();

$Back['ErrorNO']=1;

return $Back;

}

//请客户选择来确认是否一有错则全部不上传1,还是可以部门上传2

if($this->SelectUPLoadState==1)

{

//验证当前客户所上传的图片扩大名是否有效

$FileExtension=$this->CheckExtensionIsValid();

if(!empty($FileExtension))

{

return $FileExtension;

}

//验证当前客户所上传的文件年夜小是否合法

$FiliSize=$this->CheckFileSizeIsValid();

if(!empty($FiliSize))

{

return $FiliSize;

}

}

elseif($this->SelectUPLoadState==2)

{

//验证当前客户所上传的图片扩大名是否有效

$FileExtension=$this->CheckExtensionIsValid();

//验证当前客户所上传的文件年夜小是否合法

$FiliSize=$this->CheckFileSizeIsValid();

}

//文件上传保留

$FileSaveState=$this->MoveFileSave($FileExtension,$FiliSize);

if(!empty($FileSaveState))

{

return $FileSaveState;

}

}

//验证以后客户所上传的文件是否为空

private function CheckFileIsNull()

{

if(empty($this->FileData) || !is_array($this->FileData))

{

return false;

}

$ErrorStateCount=0;

foreach ($this->FileData['error'] as $key => $value) {

if($value==4)

{

$ErrorStateCount++;

}

}

if($ErrorStateCount==count($this->FileData['error']))

{

return false;

}

//设置客户所选择的多文件,对其数组进行整顿

$this->SetFileData();

return true;

}

//设置客户所选择的多文件,对其数组进行整顿

private function SetFileData()

{

$FileArr=array();$DelSeat=array();

//整理出文件上传所有数组布局

foreach ($this->FileData as $key => $value) {

foreach ($value as $key2 => $value2) {

$FileArr[$key2][$key]=$value2;

}

}

//整顿出没有上传的空文件所对应的索引

foreach($this->FileData['error'] as $key => $value) {

if($value==4)

{

$DelSeat[]=$key;

}

}

//删除没有上传的空文件数据

if(!empty($DelSeat))

{

foreach ($DelSeat as $key => $value) {

unset($FileArr[$value]);

}

}

$this->ValidFileData=$FileArr;

return true;

}

//获取当前文件的扩大名

private function GetCurrentFileExtension($Data)

{

$FileName=$Data['name'];

$FileArr=explode('.',$FileName);

return end($FileArr);

}

//验证当前客户所上传的图片扩大名是否有效

private function CheckExtensionIsValid()

{

$Back=array();

if(!empty($this->ValidFileData))

{

foreach ($this->ValidFileData as $key => $value) {

$Extension=$this->GetCurrentFileExtension($value);

if(!in_array($Extension,$this->AffirmExtension))

{

$Back['Data'][$key]=$value['name'];

}

}

}

if(!empty($Back))

{

$Back['ErrorNO']=2;

}

return $Back;

}

//验证当前客户所上传的文件年夜小是否合法

private function CheckFileSizeIsValid()

{

$Back=array();

if(!empty($this->ValidFileData))

{

foreach ($this->ValidFileData as $key => $value) {

if($value['size'] > $this->UpFileSize)

{

$Back['Data'][$key][]=$value['name'];

$Back['Data'][$key][]=$value['size'];

}

}

}

if(!empty($Back))

{

$Back['ErrorNO']=3;

}

return $Back;

}

//验证当前的目录是否是正当有效的

private function CheckDirIsValid()

{

if(is_dir($this->UpSeat))

{

return true;

}

@mkdir($this->UpSeat);//创立根目录

chmod($this->UpSeat,0777);//设置当前所创立的文件夹权限为可读可写

}

//验证当前目录下的子目录是否是正当有效的

private function CheckSubDirIsValid()

{

if(!empty($this->UpSubDir))

{

if(is_dir($this->UpSeat.$this->UpSubDir))

{

return true;

}

@mkdir($this->UpSeat.$this->UpSubDir);//创立根目录

chmod($this->UpSeat.$this->UpSubDir,0777);//设置当前所创立的文件夹权限为可读可写

}

return '';

}

//依据当前文件夹再创立出年月日的子文件夹

private function CheckYMDDirIsValid()

{

$Path=$this->UpSeat.$this->UpSubDir.date('Ymd');

if(is_dir($Path))

{

return $Path;

}

@mkdir($Path);//创立根目录

chmod($Path,0777);//设置当前所创立的文件夹权限为可读可写

return $Path;

}

//挪动客户所上传的文件

private function MoveFileSave($FileExtension='',$FiliSize='')

{

$this->CheckDirIsValid();//验证当前的目录是否是正当有效的

$this->CheckSubDirIsValid();//验证当前目录下的子目录是否是正当有效的

$Back=array();

if(!empty($FileExtension) && $FileExtension['ErrorNO']==2)

{

foreach ($FileExtension['Data'] as $key => $value) {

unset($this->ValidFileData[$key]);

}

$Back['Addition']['Extension']['ErrorNO']=2;

$Back['Addition']['Extension']['Data']=$FileExtension['Data'];

}

if(!empty($FiliSize) && $FiliSize['ErrorNO']==3)

{

foreach ($FiliSize['Data'] as $key => $value) {

unset($this->ValidFileData[$key]);

}

$Back['Addition']['Size']['ErrorNO']=3;

$Back['Addition']['Size']['Data']=$FiliSize['Data'];

}

//print_r($this->ValidFileData);

if(!empty($this->ValidFileData))

{

foreach ($this->ValidFileData as $key => $value) {

if(is_uploaded_file($value['tmp_name']))

{

//获取当前文件扩大名

$Extension=$this->GetCurrentFileExtension($value);

//依据当前文件夹再创立出年月日的子文件夹

$Path=$this->CheckYMDDirIsValid().'/'.date('YmdHis').'_'.mt_rand(100,999).'.'.$Extension;

if(move_uploaded_file($value['tmp_name'],$Path))

{

$Back['ErrorNO']=0;

$Back['Data'][$key]=$Path;

}else{

$Back['ErrorNO']=4;

$Back['Data'][$key]=$value['name'];

}

}else{

$Back['ErrorNO']=4;

$Back['Data'][$key]=$value['name'];

}

}

}

return $Back;

}

}

必修>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读