HTML代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>多文件上传</title>
</head>
<body>
<form action="02-多文件上传.php" method="post" enctype="multipart/form-data">
上传头像1:<input type="file" name="upoLoadFile[]"><br>
上传头像2:<input type="file" name="upoLoadFile[]"><br>
上传头像3:<input type="file" name="upoLoadFile[]"><br>
<input type="submit" value="上传">
<input type="hidden" name="token" value="upLoad"><!--应该是一个随机值-->
</form>
</body>
</html>
PHP代码:
<?php
//1、判断表单是否合法提交
if (isset($_POST["token"]) && $_POST["token"] == "upLoad") {
//print_r($_FILES);
//2、将三维数组转为二维数组
$files = $_FILES['upoLoadFile'];
//3、循环判断,只需要移动有文件上传的
foreach ($files['name'] as $key => $fileName) {
//4、判断上传文件有没有错误发生,有错误就提示用户
switch ($files['error'][$key]) {
case 0:
break;
case 1:
echo "<h2>错误码1:{$fileName}文本大小超过php.ini文件中默认的2M大小</h2>";
echo "<h2>{$fileName}文件上传失败!</h2><hr>";
break;
case 2:
echo "<h2>错误码2:{$fileName}文本大小超过HTML表单中MAX_FILE_SIZE选择规定的值</h2>";
echo "<h2>{$fileName}文件上传失败!</h2>";
break;
case 3:
echo "<h2>错误码3:{$fileName}文件只有部分被上传</h2>";
echo "<h2>{$fileName}文件上传失败!</h2>";
break;
case 4:
echo "<h2>错误码4:没有文件上传</h2>";
echo "<h2>{$fileName}文件上传失败!</h2>";
break;
case 6:
echo "<h2>错误码6:找不到临时文件夹</h2>";
echo "<h2>{$fileName}文件上传失败!</h2>";
break;
case 7:
echo "<h2>错误码7:{$fileName}文件写入失败</h2>";
echo "<h2>{$fileName}文件上传失败!</h2>";
break;
}
//5、如果文件名、临时文件目录都不为空,标明有文件存在并且符合要求,再进一步操作该文件
if ($fileName != "" && $files['tmp_name'][$key] != "") {
//6、判断上传文件是不是图片
$tempPath = $files['tmp_name'][$key]; //上传文件的临时目录路径
$fileType = ["image/jpeg", "image/png", "image/gif"]; //规定可上传的文件mime类型
$handle = finfo_open(FILEINFO_MIME_TYPE);
$currentFileType = finfo_file($handle, $tempPath); //获取文件mime类型
echo "<h3>{$fileName}文件MIME类型为{$currentFileType}</h3>";
if (!in_array($currentFileType, $fileType)) {
echo "<h2>{$fileName}文件不是一张图片!</h2><hr>";
continue; //不执行下面操作,继续循环
}
//7、获取文件的信息
$suffix = pathinfo($fileName, PATHINFO_EXTENSION);
//8、将上传的临时文件,移动到当前目录下
//移动文件到什么位置
$dstPath = "./uploads/" . uniqid("img_", true) . "." . $suffix;
if (move_uploaded_file($tempPath, $dstPath)) {
echo "<h2>{$fileName}文件上传成功!</h2><hr>";
}
}
}
} else {
echo "非法操作";
}
测试:
程序运行结果: