15621857753

PHP实例17:多文件上传解析及封装方法一

来源:齐鲁建站 栏目:PHP 阅读: 日期:2023-02-28

PHP实例16:多图片文件上传解析及封装上传方法,本实例分为两部分,一个是HTML文件,使用FORM表格的方式上传文件,一个是PHP文件,用来接收上传的文件,并打印出上传文件的信息,用来分析需要写哪些方法。一起来看看吧。

在之前的PHP实例10:图片文件上传解析及封装上传方法文章中,我们介绍了单图片文件的上传方法

今天要说的其实是在之前的文章稍微修改得来的,下面来说说怎么实现吧

两篇文章对比,看看修改了哪些地方

DIV代码:

<form action="upload.php" method="post" enctype="multipart/form-data">
    <div style="border: 1px #ccc solid;padding: 10px">选择文件:<input type="file"  name="file1"></div>
    <br>
    <div style="border: 1px #ccc solid;padding: 10px">选择文件:<input type="file"  name="file2"></div>
    <br>
    <div style="border: 1px #ccc solid;padding: 10px">选择文件:<input type="file"  name="file3"></div>
    <br>

    <input type="submit" value="上传" style="width: 20%;background: #999;border: 0;color: #fff;font-size: 14px;padding: 5px">
</form>

PHP代码:

//创建变量接收上传的文件
$fileInfo = $_FILES['file'];

//接收上传文件(打印一下,看看有哪些信息要写进方法)
var_dump($_FILES['file']);

//使用foreach循环实现多文件上传
$files = []; //定义空数组,防止报错
foreach ($_FILES as $fileInfo) {
    //调用下面写好的方法
    $files[] = upload_file($fileInfo);
}
var_dump($files);
echo "<hr>";

//上传方法(注意:jpg/png/gif前面不要加.)
function upload_file($fileInfo, $upload = './upload', $imagesExt = ['jpg', 'png', 'gif'])
{
    //上传错误号为0 表示上传成功
    if ($fileInfo['error'] === 0) {
        //获取文件后缀类型 JPG PNG...
        $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
        //判断上传的文件是否指定的类型
        if (!in_array($ext, $imagesExt)) {
            return '文件是非法类型';
        }
        //判断文件是否存在,不存在就创建
        if (!is_dir($upload)) {
            mkdir($upload, 0777, true);
        }
        //创建生成一个唯一的 ID 文件名;用md5为了编码; 拼接后缀
        $filename = md5(uniqid(microtime(true), true)) . "." . $ext;
        //拼接目标路径
        $destname = $upload . "/" . $filename;
        //移动并判断上传是否成功了(注意:move_uploaded_file,不是move_upload_file)
        if (!move_uploaded_file($fileInfo['tmp_name'], $destname)) {
            return "文件上传失败!";
        }
        return "文件上传成功!";
    } else {
        //123467表示上传失败及原因
        switch ($fileInfo['error']) {
            case 1:
                echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
                break;
            case 2:
                echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
                break;
            case 3:
                echo '文件只有部分被上传';
                break;
            case 4:
                echo '没有文件被上传';
                break;
            case 6:
                echo '找不到临时文件';
                break;
            case 7:
                echo '文件写入失败';
                break;
        }
    }
}

//调用上传的文件
//upload_file($fileInfo);

//打印返回值看效果
var_dump(upload_file($fileInfo));

输出效果:

PHP实例,PHP文件上传,PHP封装上传

展开