hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

【杂谈】PHP完成多个文件上传的简朴要领有哪些?(图文+视频)

2019-11-18杂谈搜奇网53°c
A+ A-
本篇文章将给人人引见关于PHP完成多个文件上传的一些简朴要领。

在此学问内容引见之前,我们在前面的文章【PHP文件上传要领详解及其信息剖析】中已为人人细致引见了php完成单个文件上传的详细要领,那末这篇文章和本日要引见的学问点是有关联的,须要的朋侪能够先参考进修下。

下面我们就经由过程详细的代码示例,为人人引见PHP完成多文件上传的一些简朴要领。

第一种要领:应用单个文件上传要领

一段简朴的form表单代码以下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
 挑选文件举行上传: <input type="file" name="file1">
 挑选文件举行上传: <input type="file" name="file2">
 挑选文件举行上传: <input type="file" name="file3">
    <input type="submit" value="上传">
</form>
</body>
</html>

代码效果以下图:

如图我们挑选上传了三个文件,然后我们再将文件上传给upload.php文件中,PHP代码以下:

<?php
echo "<pre>";
var_dump($_FILES);

那末我们继承经由过程浏览器接见效果以下:

这里我们得到了图中的二维数组,假如我们想要举行多文件上传就须要经由过程foreach轮回来完成。

那末upload.php完全代码以下:

<?php
echo "<pre>";
var_dump($_FILES);
$files = [];
foreach ($_FILES as $fileInfo) {
    $files[] = upload_file($fileInfo);
}
var_dump($files);
function upload_file($fileInfo, $upload = "./upload", $imagesExt = ['gif', 'png', 'jpg'])
{
    if ($fileInfo['error'] === 0) {
        $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
        if (!in_array($ext, $imagesExt)) {
            return "文件不法范例";
        }
        if (!is_dir($upload)) {
            mkdir($upload, 0777, true);
        }
        $fileName = md5(uniqid(microtime(true), true)) . "." . $ext;
        $destName = $upload . "/" . $fileName;
        if (!move_uploaded_file($fileInfo['tmp_name'], $destName)) {
            return "文件上传失利!";
        }
        return "文件上传胜利!";
    } else {
        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;
        }
    }
}

末了我们挑选多个文件上传,效果就以下图所示:


此时已胜利完成多个文件上传的操作了。

第二种要领:应用HTML5中的multiple要领

上传多文件的HTML界面的代码示例以下:

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

此段代码效果以下图:

在这里的form表单中我们用到了HTML 5中的 multiple 属性,这个属性示意输入字段可挑选多个值,也就是挑选该属性时,此字段能够吸收多个值。multiple是我们完成多文件上传的一个主要属性。同时我们将input中name名设置为一个file[] 数组。

那末我们再挑选多个文件上传,以下图:

如图我们挑选了三张图片,然后再用以下upload.php文件来吸收三个数据。

upload.php代码示例以下:

<?php
echo "<pre>";
var_dump($_FILES);
$files = [];
foreach ($_FILES as $fileInfo) {
    $files[] = upload_file($fileInfo);
}
var_dump($files);
function upload_file($fileInfo, $upload = "./upload", $imagesExt = ['gif', 'png', 'jpg'])
{
    if ($fileInfo['error'] === 0) {
        $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
        if (!in_array($ext, $imagesExt)) {
            return "文件不法范例";
        }
        if (!is_dir($upload)) {
            mkdir($upload, 0777, true);
        }
        $fileName = md5(uniqid(microtime(true), true)) . "." . $ext;
        $destName = $upload . "/" . $fileName;
        if (!move_uploaded_file($fileInfo['tmp_name'], $destName)) {
            return "文件上传失利!";
        }
        return "文件上传胜利!";
    } else {
        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.php这个文件中的信息剖析要领关于用multiple属性上传来的文件并没有发生效果。

那末本篇文章就先给人人引见PHP运用multiple属性完成多文件上传的这两种简朴要领,在后续的文章中我们会继承为人人细致引见,PHP完成多文件上传及信息剖析也就是第二种要领的详解!

想要相识更多PHP相干学问,人人能够关注Ki4网PHP视频教程。迎接人人来参考进修!

以上就是PHP完成多个文件上传的简朴要领有哪些?(图文+视频)的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
【杂谈】PHP完成多个文件上传的简朴要领有哪些?(图文+视频)

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章

本文来源:搜奇网

本文地址:https://www.sou7.cn/281844.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>