首页 每日编程 PHP知识 php怎么使用multiple属性实现多文件上传及信息解析?(图文+视频)

php怎么使用multiple属性实现多文件上传及信息解析?(图文+视频)

Sep 17, 2018 pm 05:35 PM

本篇文章将继续为大家介绍如何使用HTML5中的multiple属性来实现PHP多文件上传以及信息解析的具体方法。

那么我们在之前的文章【PHP实现多个文件上传的简单方法有哪些?】中,已经为大家简单介绍了一些php实现多文件上传的简单方法,需要的朋友可以参考学习。

下面我们再通过具体的代码示例,为大家详细介绍php使用multiple属性来实现多文件上传及其信息解析的完整方法。

首先HTML form表单代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="getFile.php" method="post" enctype="multipart/form-data">
 选择文件进行上传: <input type="file" name="file[]" multiple=""><br>
    <input type="submit" value="上传">
</form>
</body>
</html>
登录后复制

我们选择上传多张图片,再通过浏览器访问,效果如下:

ed5d12cbde1ca6635259923f144e983.png

566bd9c36a11a38e243962f11c8faff.png

c8cac385003fc57e32ff8363dd5280d.png

再将文件上传到getFile.php这个文件中,PHP代码示例如下:

var_dump($_FILES);
登录后复制

此时通过浏览器访问结果如下:

8797d746f133257afa2c257e7b5200c.png

此时可以看到我们获取到了上图中的三维数组。

那么我们想要对上传来的多个文件进行信息解析,就需要先对上传信息进行组装。

那么完整的getFile.php代码如下:

<?php
/**
 * 组装多文件上传信息
 */
$files = [];
function getFile()
{
    $i = 0;
    foreach ($_FILES as $file) {
        if (is_string($file[&#39;name&#39;])) {
            $files[&#39;$i&#39;] = $file;
            $i++;
        } elseif (is_array($file[&#39;name&#39;])) {
            foreach ($file[&#39;name&#39;] as $k => $v) {
                $files[$i][&#39;name&#39;] = $file[&#39;name&#39;][$k];
                $files[$i][&#39;type&#39;] = $file[&#39;type&#39;][$k];
                $files[$i][&#39;tmp_name&#39;] = $file[&#39;tmp_name&#39;][$k];
                $files[$i][&#39;error&#39;] = $file[&#39;error&#39;][$k];
                $files[$i][&#39;size&#39;] = $file[&#39;size&#39;][$k];
                $i++;
            }
        }
    }
    return $files;
}

/**
 * 文件上传
 * @param $fileInfo
 * @param string $upload
 * @param array $imagesExt
 * @return string
 */
function upload_file($fileInfo, $upload = "./upload", $imagesExt = [&#39;gif&#39;, &#39;png&#39;, &#39;jpg&#39;])
{
    $res = [];
    if ($fileInfo[&#39;error&#39;] === 0) {
        $ext = strtolower(pathinfo($fileInfo[&#39;name&#39;], PATHINFO_EXTENSION));
        if (!in_array($ext, $imagesExt)) {
            $res[&#39;mes&#39;] = "文件非法类型";
        }
        if (!is_dir($upload)) {
            mkdir($upload, 0777, true);
        }
        if ($res) {
            return $res;
        }
        $fileName = md5(uniqid(microtime(true), true)) . "." . $ext;
        $destName = $upload . "/" . $fileName;
        if (!move_uploaded_file($fileInfo[&#39;tmp_name&#39;], $destName)) {
            $res[&#39;mes&#39;] = "文件上传失败!";
        }
        $res[&#39;mes&#39;] = $fileInfo[&#39;name&#39;] . "文件上传成功!";
        $res[&#39;dest&#39;] = $destName;
        return $res;
    } else {
        switch ($fileInfo[&#39;error&#39;]) {
            case 1:
                $res[&#39;mes&#39;] = &#39;上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值&#39;;
                break;
            case 2:
                $res[&#39;mes&#39;] = &#39;上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值&#39;;
                break;
            case 3:
                $res[&#39;mes&#39;] = &#39;文件只有部分被上传&#39;;
                break;
            case 4:
                $res[&#39;mes&#39;] = &#39;没有文件被上传&#39;;
                break;
            case 6:
                $res[&#39;mes&#39;] = &#39;找不到临时文件夹&#39;;
                break;
            case 7:
                $res[&#39;mes&#39;] = &#39;文件写入失败&#39;;
                break;
        }
        return $res;
    }
}

$files = getFile();

foreach ($files as $fileInfo) {
    $res = upload_file($fileInfo);
    echo $res[&#39;mes&#39;];
    var_dump($res[&#39;dest&#39;]);
}
登录后复制

在上述代码中,我们首先通过foreach循环判断语句对上传来的多维数组信息进行判断重组,然后再创建upload_file方法对多个文件的上传信息进行解析。

这里的upload_file方法我们在【PHP文件上传方法详解及其信息解析】这篇文章中已经详细介绍过了,大家可以选择参考。以上就是关于PHP实现多文件上传及其信息解析的具体方法。

想要了解更多的PHP相关知识,可以关注PHP中文网的PHP视频教程

以上是php怎么使用multiple属性实现多文件上传及信息解析?(图文+视频)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)