上传单.多个文件的函数封装
function buildInfo(){
if(!$_FILES){
return ;
}
$i=0;
foreach($_FILES as $v){
//单文件
if(is_string($v['name'])){
$files[$i]=$v;
$i++;
}else{
//多文件
foreach($v['name'] as $key=>$val){
$files[$i]['name']=$val;
$files[$i]['size']=$v['size'][$key];
$files[$i]['tmp_name']=$v['tmp_name'][$key];
$files[$i]['error']=$v['error'][$key];
$files[$i]['type']=$v['type'][$key];
$i++;
}
}
}
return $files;
}
//上传文件
function uploadFile($path="uploads",$allowExt=array("gif","jpeg","png","jpg","wbmp"),$maxSize=2097152,$imgFlag=true){
if(!file_exists($path)){
mkdir($path,0777,true);
}
$i=0;
$files=buildInfo();
if(!($files&&is_array($files))){
return ;
}
foreach($files as $file){
if($file['error']===UPLOAD_ERR_OK){
$ext=getExt($file['name']);
//检测文件的扩展名
if(!in_array($ext,$allowExt)){
exit("非法文件类型");
}
//校验是否是一个真正的图片类型
if($imgFlag){
if(!getimagesize($file['tmp_name'])){
exit("不是真正的图片类型");
}
}
//上传文件的大小
if($file['size']>$maxSize){
exit("上传文件过大");
}
if(!is_uploaded_file($file['tmp_name'])){
exit("不是通过HTTP POST方式上传上来的");
}
$filename=getUniName().".".$ext;
$destination=$path."/".$filename;
if(move_uploaded_file($file['tmp_name'], $destination)){
$file['name']=$filename;
unset($file['tmp_name'],$file['size'],$file['type']);
$uploadedFiles[$i]=$file;
$i++;
}
}else{
switch($file['error']){
case 1:
$mes="超过了配置文件上传文件的大小";//UPLOAD_ERR_INI_SIZE
break;
case 2:
$mes="超过了表单设置上传文件的大小"; //UPLOAD_ERR_FORM_SIZE
break;
case 3:
$mes="文件部分被上传";//UPLOAD_ERR_PARTIAL
break;
case 4:
$mes="没有文件被上传1111";//UPLOAD_ERR_NO_FILE
break;
case 6:
$mes="没有找到临时目录";//UPLOAD_ERR_NO_TMP_DIR
break;
case 7:
$mes="文件不可写";//UPLOAD_ERR_CANT_WRITE;
break;
case 8:
$mes="由于PHP的扩展程序中断了文件上传";//UPLOAD_ERR_EXTENSION
break;
}
echo $mes;
}
}
return $uploadedFiles;
}
转载于:https://www.cnblogs.com/lsl321/p/7953618.html
上传单.多个文件的函数封装相关推荐
- php文件操作(最后进行文件常用函数封装)
文件信息相关API $filename="./1-file.php";//filetype($filename):获取文件的类型,返回的是文件的类型echo '文件类型为:',fi ...
- php 函数封装上传,PHP(多)文件上传实现和函数封装
一.PHP 文件上传的相关知识 对 PHP 文件上传的相关知识总结主要是参考老师演示的代码和 drawer.php(某大神写的 PHP 单文件版的服务器文件管理端) 1. php 关于文件上传的配置文 ...
- express,multer,jQuery前端后端上传单个文件
文章目录 先安装基本的模块 附上multer的github当中别人汉化的API文档 开始创建基本express(上传图片) 测试是否正常 前端部分 前端需要注意的 multer使用 multer({} ...
- data后缀文件解码_封装ThinkPHP6.0通用文件上传
php中文网最新课程 每日17点准时技术干货分享 本文为php中文网认证作者:"wpj"投稿,欢迎加入php中文网有偿投稿计划! 本文实例讲述了封装ThinkPHP6通用文件上传方 ...
- js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)...
js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js 1 function ajax( ...
- formdata多文件上传_如何使用FormData轻松上传单个或多个文件
formdata多文件上传 In this post, we'll learn about the FormData interface available in modern web browser ...
- webflow ajax,java开发之spring webflow实现上传单个文件及多个文件功能实例
本文实例讲述了java开发之spring webflow实现上传单个文件及多个文件功能.分享给大家供大家参考,具体如下: 上传单个文件 准备 1. 如果你项目中使用了spring security的话 ...
- 初识C语言之函数封装篇——带你嗅探万花从中的清香(上)
函 数 概 述 构成C程序的基本单元是函数.函数中包含程序的可执行代码. 每个C程序的入口和出口都位于main函数之中.编写程序时,并不是将所有的内容都放在主函数main中.为了方便规划.组织.编写和 ...
- springboot上传下载文件(4)--上传下载工具类(已封装)
因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...
最新文章
- SpringBoot jetty webflux
- MySql中的varchar类型
- Windows Mobile 5
- 前端学习(94):css重置样式
- 无法打开用户默认数据库,登录失败,用户‘sa’登录失败,错误:4064的解决方法...
- CentOS 7 防火墙操作
- linux中如何统计目录中的文件,[Linux目录文件]在Linux中统计目录内文件
- 使用python脚本定时备份web网站
- 和feign的区别_Feign的传参研究
- 前端基础-CSS如何布局以及文档流,对于新手来说,特别有用
- cba篮球暂停次数和时间_CBA一场比赛每支球队可以叫多少次暂停
- 达摩院年终发布:2022十大科技趋势
- Intel DCM 携手DELL共同推出关于DCIM的联合调研
- 前端开发:报错Error in created hook:”SyntaxError:Unexpected token u in JSON at position 0”…解决方法
- 9个超绚丽的HTML5 3D图片动画特效
- 【产业互联网周报】微软、谷歌再布局边缘云;美团放弃公有云业务;开普云登陆科创板...
- Kubernetes 之 集群二进制部署
- idea设置类注释和方法注释(贼详细)
- linux ln -sv命令,linux ln 命令详解
- 边缘计算在视频直播场景的应用与实践