文件上传与下载学习笔记(2)---多文件、单文件、多个单文件函数封装
2016-01-30 15:37
645 查看
一:前导知识点:
1:is_string()判断一个变量是否是字符串 is_array 判断一个变量是否是数组2:pathinfo()函数可以获取文件的扩展名。
3:创建目录函数 mkdir()
4: 生成唯一的随机数 uniqid()
5:判断文件、目录是否存在file_exsits()
二:思路与流程
三:封装的函数代码
<?php /** * 得到想要的文件类型 * @return unknown */ 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 $k => $v ) { $files [$k] ['name'] = $v; $files [$k] ['type'] = $file ['type'] [$k]; $files [$k] ['tmp_name'] = $file ['tmp_name'] [$k]; $files [$k] ['error'] = $file ['error'] [$k]; $files [$k] ['size'] = $file ['size'] [$k]; } } } return $files; } /** * 上传文件 * @param unknown $fileInfo * @return string */ function uploadFiles($fileInfo, $path = "ttt",$allowExt = array ('jpg','jpeg','png','gif' ),$maxSize = 20000000,$flag = false) { //通过pathinfo得到文件扩展名 $ext = pathinfo ( $fileInfo ['name'],PATHINFO_EXTENSION ); //得到文件的唯一名称 $uniName = md5 ( uniqid ( microtime ( true ), true ) ) . '.' . $ext; $destination = $path . '/' . $uniName; $res ['mes'] = null; //如果目录不存在,创建目录 if (! file_exists ( $path )) { mkdir ( $path, 0777, true ); } // 判断错误号 if ($fileInfo ['error'] == 0) { // 判断文件大小 if ($fileInfo ['size'] > $maxSize) { $res ['mes'] = $fileInfo['name']."上传文件过大"; } // 判断文件类型 if (! in_array ( $ext, $allowExt )) { $res ['mes'] = $fileInfo['name']." 文件格式不正确"; } // 判断是否是真的图片 if ($flag) { if (! getimagesize ( $fileInfo ['tmp_name'] )) { $res ['mes'] = $fileInfo['name']."不是真的图片"; } } // 判断是否通过HTTP POST 方式上传 if (! is_uploaded_file ( $fileInfo ['tmp_name'] )) { $res ['mes'] = $fileInfo['name']."文件上传途径不正确"; } // 如果有值,就结束返回 if ($res ['mes']) return $res; // 移动文件 if (move_uploaded_file ( $fileInfo ['tmp_name'], $destination )) { $res ['mes'] = $fileInfo['name']."文件上传成功"; $res ['dst'] = $destination; } return $res; } else { switch ($fileInfo['error']) { case 1 : $res ['mes']= $fileInfo['name'].'上传文件超过了upload_max_filesize 选项的值'; break; case 2 : $res ['mes']= $fileInfo['name'].'超过了表单MAX_FILE_SIZE限制的大小'; break; case 3 : $res ['mes']= $fileInfo['name'].'文件上传不完整'; break; case 4 : $res ['mes']= $fileInfo['name'].'没有选择上传文件'; break; case 6 : $res ['mes']= $fileInfo['name'].'没有找到临时目录'; break; case 7 : $res ['mes']= $fileInfo['name'].'文件写入失败'; break; case 8 : $res ['mes']= $fileInfo['name'].'文件上传被php扩展程序中断'; break; } return $res; } }
相关文章推荐
- Android 打包so动态库文件到APK
- Android 打包so动态库文件到APK
- grep命令
- Android上定义播放器控件UniversalVideoView
- Oracle 数据的导入和导出(SID service.msc)
- 文件上传与下载学习笔记(1)---文件上传原理及配置
- 数据结构实验之链表七:单链表中重复元素的删除
- 99. xpath
- hdoj1009FatMouse' Trade
- 用AFNetworking 做JSON数据解析遇到 3840 错误
- 简悦创始人云风谈程序员的职业素养
- 电子书阅读及工具
- 简悦创始人云风谈程序员的职业素养
- flex布局
- SPL学习笔记(5)---函数的使用
- Android sdk 接入时遇到的错误解决方案
- HDU 1159 【DP数塔变形】
- LDD3源码分析之llseek分析
- 页面无法按照样式表进行渲染的诡异问题
- Android 学习1----控件的学习