您的位置:首页 > 其它

文件上传与下载学习笔记(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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: