700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 如何实现php多文件上传封装

如何实现php多文件上传封装

时间:2023-06-26 02:12:50

相关推荐

如何实现php多文件上传封装

后端开发|php教程

php,封装,上传

后端开发-php教程

多文件的上传实现

搭建时时彩网站源码,vscode无法访问图片,ubuntu复制主机,怎么开启多个tomcat,js动态爬虫,php 正则 模式修正符,四川seo优化程序,swf影视网站源码,vb opencv 模板匹配识别源码lzw

1 利用单文件封装

客服考核源码,ubuntu不提供dvd,tomcat配置资源服务器,晚上爬虫有粘液,美发会员卡系统源码PHP,dps和seolzw

Insert title here请选择您要上传的文件:

请选择您要上传的文件:

请选择您要上传的文件:

请选择您要上传的文件:

<?php//print_r($_FILES);header(content-type:text/html;charset=utf-8);include_once upFunc.php;foreach ($_FILES as $fileInfo){ $file[]=uploadFile($fileInfo);}

这里的思路,从print_r($_FILES)中去找,打印出来看到是个二维数组,很简单,遍历去用就好了!

文章搜索引擎源码下载,ubuntu鼠标隐身了,骷髅爬虫的名字,php图片调正,zero seo 视频lzw

上面那个function的定义改一下,给定一些默认值

function uploadFile($fileInfo,$path="uploads",$allowExt=array(jpeg,jpg,png, if),$maxSize=10485760){

这样子,简单是简单,但遇到一些问题。

正常的上传4个图片是没问题,但要是中间激活了函数中的exit,就会立即停止,导致其他图片也无法上传。

2 升级版封装

旨在实现针对多个或单个文件上传的封装

首先这样子写个静态文件

Insert title here请选择您要上传的文件:

请选择您要上传的文件:

请选择您要上传的文件:

请选择您要上传的文件:

打印一下$_FILES

Array( [myFile] => Array ( [name] => Array( [0] => test32.jpg [1] => test32.jpg [2] => 333.jpg [3] => test41.jpg) [type] => Array( [0] => image/png [1] => image/png [2] => image/png [3] => image/png) [tmp_name] => Array( [0] => D:\wamp\tmp\php831C.tmp [1] => D:\wamp\tmp\php834C.tmp [2] => D:\wamp\tmp\php837C.tmp [3] => D:\wamp\tmp\php83BB.tmp) [error] => Array( [0] => 0 [1] => 0 [2] => 0 [3] => 0) [size] => Array( [0] => 46174 [1] => 46174 [2] => 34196 [3] => 38514) ))

可以得到一个三维数组。

复杂是复杂了,但复杂的有规律,各项数值都在一起了,很方便我们取值!!

所以先得到文件信息,变成单文件处理那种信息

function getFiles(){ $i=0; foreach($_FILES as $file){ if(is_string($file[ ame])){ //单文件判定 $files[$i]=$file; $i++; }elseif(is_array($file[ ame])){ foreach($file[ ame] as $key=>$val){ //我的天,这个$key用的diao$files[$i][ ame]=$file[ ame][$key];$files[$i][ ype]=$file[ ype][$key];$files[$i][ mp_name]=$file[ mp_name][$key];$files[$i][error]=$file[error][$key];$files[$i][size]=$file[size][$key];$i++; } } } return $files; }

然后之前的那种exit错误,就把exit改一下就好了,这里用res

function uploadFile($fileInfo,$path=./uploads,$flag=true,$maxSize=1048576,$allowExt=array(jpeg,jpg,png,gif)){ //$flag=true; //$allowExt=array(jpeg,jpg,gif,png); //$maxSize=1048576;//1M //判断错误号 $res=array(); if($fileInfo[error]===UPLOAD_ERR_OK){ //检测上传得到小 if($fileInfo[size]>$maxSize){ $res[mes]=$fileInfo[ ame].上传文件过大; } $ext=getExt($fileInfo[ ame]); //检测上传文件的文件类型 if(!in_array($ext,$allowExt)){ $res[mes]=$fileInfo[ ame].非法文件类型; } //检测是否是真实的图片类型 if($flag){ if(!getimagesize($fileInfo[ mp_name])){$res[mes]=$fileInfo[ ame].不是真实图片类型; } } //检测文件是否是通过HTTP POST上传上来的 if(!is_uploaded_file($fileInfo[ mp_name])){ $res[mes]=$fileInfo[ ame].文件不是通过HTTP POST方式上传上来的; } if($res) return $res; //$path=./uploads; if(!file_exists($path)){ mkdir($path,0777,true); chmod($path,0777); } $uniName=getUniName(); $destination=$path./.$uniName...$ext; if(!move_uploaded_file($fileInfo[ mp_name],$destination)){ $res[mes]=$fileInfo[ ame].文件移动失败; } $res[mes]=$fileInfo[ ame].上传成功; $res[dest]=$destination; return $res; }else{ //匹配错误信息 switch ($fileInfo [error]) { case 1 :$res[mes] = 上传文件超过了PHP配置文件中upload_max_filesize选项的值;break; case 2 :$res[mes] = 超过了表单MAX_FILE_SIZE限制的大小;break; case 3 :$res[mes] = 文件部分被上传;break; case 4 :$res[mes] = 没有选择上传文件;break; case 6 :$res[mes] = 没有找到临时目录;break; case 7 : case 8 :$res[mes] = 系统错误;break; } return $res; }}

里面封装了两个小的

function getExt($filename){ return strtolower(pathinfo($filename,PATHINFO_EXTENSION));}/** * 产生唯一字符串 * @return string */function getUniName(){ return md5(uniqid(microtime(true),true));}

然后静态中,用multiple属性实现多个文件的输入;

Insert title here请选择您要上传的文件:

<?php //print_r($_FILES);header("content-type:text/html;charset=utf-8");require_once upFunc2.php;require_once common.func.php;$files=getFiles();// print_r($files);foreach($files as $fileInfo){ $res=uploadFile($fileInfo); echo $res[mes],

; $uploadFiles[]=@$res[dest];}$uploadFiles=array_values(array_filter($uploadFiles));//print_r($uploadFiles);

这样子的几个文件,就实现比较强大的面向过程的上传文件的功能。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。