PHP多文件上传函数
2017-08-26 22:50
543 查看
封装的函数
<?php /* *@获取数组信息 *@三维数组转化为二位数组 */ function getFiles() { $i=0; foreach ($_FILES as $file) { if(is_string($file['name'])){ $files[$i]=$file; $i++; }elseif(is_array($file['name'])){ foreach ($file['name'] as $key => $value) { $files[$i]['name']=$file['name'][$key]; $files[$i]['type']=$file['type'][$key]; $files[$i]['tmp_name']=$file['tmp_name'][$key]; $files[$i]['error']=$file['error'][$key]; $files[$i]['size']=$file['size'][$key]; $i++; } } } return $files; } /* *多文件上传 */ function uploadFile($fileInfo,$flag=true,$path='./uploads',$maxSize=1048576,$allowExt=array('jpeg','jpg','png','gif','wbmp')) { //判断错误号 if($fileInfo['error']===UPLOAD_ERR_OK){ //检测上传的大小 if($fileInfo['size']>$maxSize){ $res['msg']=$fileInfo['name'].'上传文件过大'; } //检测上传文件的类型 // $allowExt=array('jpeg','jpg','png','gif','wbmp'); $ext=getExt($fileInfo['name']); if(!in_array($ext,$allowExt)){ $res['msg']=$fileInfo['name'].'非法文件类型'; } //检测是否是真实的图片类型 // $flag=true; if($flag){ if(!getimagesize($fileInfo['tmp_name'])){ $res['msg']=$fileInfo['name'].'不是真正的图片类型'; } } //检测文件是否是通过HTTP POST方式上传的 if(!is_uploaded_file($fileInfo['tmp_name'])){ $res['msg']=$fileInfo['name'].'文件不是通过HTTP POST方式上传的合法文件'; } //上传文件 if($res) return $res; // $path='./uploads'; if(!file_exists($path)){ mkdir($path,0777,true); chmod($path,0777); } $uriName=getUniName(); $destination=$path.'/'.$uriName.'.'.$ext; if(!move_uploaded_file($fileInfo['tmp_name'],$destination)){ $res['msg']=$fileInfo['name'].'文件移动失败'; } //文件上传成功 $res['msg']=$fileInfo['name'].'文件上传成功'; $res['dest']=$destination; return $res; }else{ switch ($fileInfo['error']) { case 1: $res['msg']= '上传文件超过了PHP配置文件中upload_max_filesize选项的值'; break; case 2: $res['msg']= '超过了表单MAX_FTLE_SIZE限制的大小'; break; case 3: $res['msg']='文件部分被上传'; break; case 4: $res['msg']= '没有选择上传文件'; break; case 6: $res['msg']= '没有找到临时目录'; break; case 7: case 8: $res['msg']= '系统错误'; break; } return $res; } } /* *得到扩展名 */ function getExt($filename){ return strtolower(pathinfo($filename,PATHINFO_EXTENSION)); } /* *得到唯一文件名 */ function getUniName(){ return md5(uniqid(microtime(true),true)); } // 过滤空值,新数组输出 // $uploadFiles = array_values(array_filter($uploadFiles));
<?php /* *@获取数组信息 *@三维数组转化为二位数组 */ function getFiles() { $i=0; foreach ($_FILES as $file) { if(is_string($file['name'])){ $files[$i]=$file; $i++; }elseif(is_array($file['name'])){ foreach ($file['name'] as $key => $value) { $files[$i]['name']=$file['name'][$key]; $files[$i]['type']=$file['type'][$key]; $files[$i]['tmp_name']=$file['tmp_name'][$key]; $files[$i]['error']=$file['error'][$key]; $files[$i]['size']=$file['size'][$key]; $i++; } } } return $files; } /* *多文件上传 */ function uploadFile($fileInfo,$flag=true,$path='./uploads',$maxSize=1048576,$allowExt=array('jpeg','jpg','png','gif','wbmp')) { //判断错误号 if($fileInfo['error']===UPLOAD_ERR_OK){ //检测上传的大小 if($fileInfo['size']>$maxSize){ $res['msg']=$fileInfo['name'].'上传文件过大'; } //检测上传文件的类型 // $allowExt=array('jpeg','jpg','png','gif','wbmp'); $ext=getExt($fileInfo['name']); if(!in_array($ext,$allowExt)){ $res['msg']=$fileInfo['name'].'非法文件类型'; } //检测是否是真实的图片类型 // $flag=true; if($flag){ if(!getimagesize($fileInfo['tmp_name'])){ $res['msg']=$fileInfo['name'].'不是真正的图片类型'; } } //检测文件是否是通过HTTP POST方式上传的 if(!is_uploaded_file($fileInfo['tmp_name'])){ $res['msg']=$fileInfo['name'].'文件不是通过HTTP POST方式上传的合法文件'; } //上传文件 if($res) return $res; // $path='./uploads'; if(!file_exists($path)){ mkdir($path,0777,true); chmod($path,0777); } $uriName=getUniName(); $destination=$path.'/'.$uriName.'.'.$ext; if(!move_uploaded_file($fileInfo['tmp_name'],$destination)){ $res['msg']=$fileInfo['name'].'文件移动失败'; } //文件上传成功 $res['msg']=$fileInfo['name'].'文件上传成功'; $res['dest']=$destination; return $res; }else{ switch ($fileInfo['error']) { case 1: $res['msg']= '上传文件超过了PHP配置文件中upload_max_filesize选项的值'; break; case 2: $res['msg']= '超过了表单MAX_FTLE_SIZE限制的大小'; break; case 3: $res['msg']='文件部分被上传'; break; case 4: $res['msg']= '没有选择上传文件'; break; case 6: $res['msg']= '没有找到临时目录'; break; case 7: case 8: $res['msg']= '系统错误'; break; } return $res; } } /* *得到扩展名 */ function getExt($filename){ return strtolower(pathinfo($filename,PATHINFO_EXTENSION)); } /* *得到唯一文件名 */ function getUniName(){ return md5(uniqid(microtime(true),true)); }
// 过滤空值,新数组输出// $uploadFiles = array_values(array_filter($uploadFiles));view
<!-- multiple选择多个文件上传 --><input type="file" name="myFile[]" multiple="multiple"/><br><input type="submit" value="上传文件" /><br>
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>文件上传</title></head><body><form action="morefile.php" method="post" enctype="multipart/form-data"><span>请上传您的文件:</span><input type="file" name="myFile[]"/><br><span>请上传您的文件:</span><input type="file" name="myFile[]"/><br><span>请上传您的文件:</span><input type="file" name="myFile[]"/><br><span>请上传您的文件:</span><input type="submit" value="上传文件" /><br></form></body></html>
相关文章推荐
- PHP - Manual手册 - XL. Filesystem 文件系统函数 - is_uploaded_file判断文件是否是通过 HTTP POST 上传的
- PHP文件上传-单文件上传函数
- php上传单个或者多个文件函数
- PHP文件上传-单文件上传函数思路
- php里的unpack函数判断上传文件的类型
- 用php写 ftp文件上传函数教程
- php 上传文件类型判断函数(避免上传漏洞 )
- 获取服务器支持文件最大上传大小 (PHP代码函数)
- php.ini针对文件上传的修改还有move_uploaded_file()函数对中文字符上传失败的解决方法
- php上传文件的增强函数
- PHP文件上传-单文件上传函数
- php文件上传函数
- php上传文件的增强函数
- PHP单文件上传原理及上传函数的封装
- ***PHP $_FILES函数详解 + PHP文件上传 move_uploaded_file() 参数的正确写法
- php ftp文件上传函数--新手入门参考
- 【php】文件上传函数,返回值为文件在服务器端的相对地址
- PHP中封装上传文件函数
- php 中$_FILES 文件上传中重要函数