index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<!-- 上传结构-->
<form action="upload.php" method="post" enctype="multipart/form-data">
请选择上传文件:<br/>
<input type="file" name="upload[]" /><br/>
<input type="file" name="upload[]" /><br/>
<input type="file" name="upload[]" /><br/>
<input type="submit" name="submit" value="立即上传"></input>
</form>
</body>
</html>
upload.php
<?php
header("content-type:text/html;charset=utf-8");
require_once 'config.php';//将封装函数导进来
if (isset($_POST['submit'])) {
//上传文件储存路径:当前文件夹 upload 文件夹
$path= './upload';
//假如,允许上传的文件格式 为 image/jpeg image/png
$arr_mime=array('image/jpeg','image/png');
//将三维数组转化成二维数组
$arr=$_FILES['upload'];
//函数调用
upload($arr,$arr_mime,$path);
}else{
echo "<script>alert('非法操作');location.href='index.php';</script>";
}
?>
config.php
<?php
/**
* [upload descript]
*@param [type]$file [表单中文件域name 的值 如:$_FILES['upload']]
*@param [type] $arr_mime [允许上传的文件类型]
*@param [type] $path [自己定义的上传文件的路径]
*
*@return [type] [description]
*/
function upload($file,$arr_mime,$path){
//判断表单是否由 HTTP POST 上传
//is_uploaded_file(上传临时文件)
if (!is_uploaded_file($file['tmp_name'])) {
exit('上传的文件有问题');
}
//判断上传文件是否有错误
if ($file['error']!=0) {
exit('上传文件有错误,请重新上传');
}
//控制上传文件的大小,允许上传小于2Mb
if($file['size']>2*1024*1024){
exit('上传的文件大于2mb');
}
//获取文件的扩展命名
//方法一
//strrpos- 计算指定字符串 在字符串中的最后出现的位置
//$index=strrpos($file['name'],'.');
//$str=substr($file['name'], $index);
//echo $str;
//方法2 strrchr - 查找字符串在字符串中 最后一次出现
$ext=strrchr($file['name'],'.');
//我们使用第三方的扩展 判断文件类型 通过上传文件扩展名 判断上传文件类型是不靠谱的
$fs=finfo_open(FILEINFO_MIME_TYPE);// 调用第三方扩展 获取
//var_dump($fs);// resource(2) of type (file_info) 资源类型 //资源类型的详细类型
//finfo_file(资源类型,上传临时文件)
$mime=finfo_file($fs,$file['tmp_name']);
//echo $mime;
//假设本网站 只允许用户 上传 类型图片类型为 image/jpeg image/png
//$arr_mime=array('image/jpeg','image/png');
//in_array($mime,$arr);判断 得到的类型在不在数组内
if (!in_array($mime,$arr_mime)) {
exit('上传文件不合法,请重新上传');
}
//构建临时文件
$filename = $file['tmp_name'];
//构建 目标文件的 文件名及路径
$path='./upload';//在服务器的目录
$destination= $path.'/'.date('YmdHis').$ext;
if (!move_uploaded_file($filename, $destination)){
exit('上传失败!');
}
}
?>