PHP多文件上传的实现

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 "非法操作";
}

测试:
在这里插入图片描述
程序运行结果:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44790046/article/details/106002759