PHP如何实现多文件上传

小云云
发布: 2018-03-30 13:12:47
原创
5366人浏览过

本文主要和大家分享PHP如何实现多文件上传,希望能帮助到大家。

PHP文件上传流程
1. 单击提交按钮,浏览器用户将包含上传文件的表单数据提交给PHP处理程序
2. Web服务器和PHP预处理器首先判断表单数据的大小是否超过php.ini配置文件中的post_max_size选项设置的上限值。
   若超过,PHP处理程序将无法得到任何表单数据,此时不仅上传文件失败,而且表单控件中填写的数据也会提交失败,也就是说:PHP处理程序预定义变量$_GET、$_POST、$_FILES将为空数组。
   若没有超过,文件上传进入第3步检验。
3. 检验表单中的文件大小是否超过表单隐藏域MAX_FILE_SIZE设置的上限值。
   若超过,PHP预处理器返回状态码2,文件上传失败。
   若没有超过,文件上传进入第4步检验。
   (当有多个文件进行上传时,某个文件上传框导致的文件上传失败,不会影响其他文件上传框的上传结果)
4. 检验表单中的文件是否超过php.ini配置文件中upload_max_filesize选项设置的上限值。
   若超过,PHP预处理器返回状态码1,文件上传失败。
   若没有超过,文件上传进入第5步检验。
5. PHP实现上传文件需要在php.ini配置文件upload_tmp_dir选项定义的目录中创建一个与上传文件一一对应的临时文件(默认拓展名为tmp),上传成功后,临时文件立即消失,此时PHP预处理器的返回状态码0。
   但是有时由于默写原因(如max_execution_time选项设置过小或者网速慢等原因),上传部分文件后不再继续上传剩余文件,导致文件上传失败,此时PHP预处理器返回状态码3
   若通过,文件上传进入第6步检验。
6. 实现文件上传的关键一步在于在临时文件消失前,需要将临时文件保存到Web服务器或文件服务器。PHP提供的两个函数:is_uploaded_file()函数和move_uploaded_file()函数,可以帮助完成这一步的工作


多个文件上传要注意的就是相同的name保存的文件内容是按照下面的形式放在数组中的。是五个数组,按照文件的五个参数分别存放的,并非三个数组。所以如果直接使用count($_files[‘$mypicture’]),答案为5。

立即学习PHP免费学习笔记(深入)”;

array (size=5)  'name' => 
    array (size=3)      0 => string '1.txt' (length=5)      1 => string '2.txt' (length=5)      2 => string '3.txt' (length=5)  'type' => 
    array (size=3)      0 => string 'text/plain' (length=10)      1 => string 'text/plain' (length=10)      2 => string 'text/plain' (length=10)  'tmp_name' => 
    array (size=3)      0 => string 'D:\wamp64\tmp\phpC5E8.tmp' (length=25)      1 => string 'D:\wamp64\tmp\phpC5E9.tmp' (length=25)      2 => string 'D:\wamp64\tmp\phpC5EA.tmp' (length=25)  'error' => 
    array (size=3)      0 => int 0
      1 => int 0
      2 => int 0
  'size' => 
    array (size=3)      0 => int 0
      1 => int 0
      2 => int 0
登录后复制
登录后复制

index.php文件

<form action="fileSystem.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="submit" value="提交">
</form>
登录后复制
登录后复制

fileSystem文件

<?php
    if (empty($_POST)) {        exit("提交的表单数据超过post_max_size的配置");
    }    $arr = $_FILES['myPicture'];    $file =array();    for ($i=0; $i < count($arr['name']); $i++) { 
        $file[$i]['name'] = $arr['name'][$i];        $file[$i]['type'] = $arr['type'][$i];        $file[$i]['tmp_name'] = $arr['tmp_name'][$i];        $file[$i]['error'] = $arr['error'][$i];        $file[$i]['size'] = $arr['size'][$i];
    }    for ($i=0; $i < count($file); $i++) { 
        switch ($file[$i]['error']) {            case 0:          
                $fileName = $file[$i]['name'];                $fileTemp = $file[$i]['tmp_name'];                $destination = "uploads/" . $file[$i]['name'];
                move_uploaded_file($fileTemp, $destination);                echo "上传成功";                break;            case 1:                echo "上传附件超过php.ini中的upload_max_filesize选项的限制";                break;            case 2:                echo "上传附件的大小超过了form表单MAX_FILE_SIZE选项指定的值";                break;            case 3:                echo "附件只有部分被上传";                break;            case 4:                echo "没有选择上传附件";                break;
        } 
    }   
?>
登录后复制
登录后复制

               

PHP文件上传流程
1. 单击提交按钮,浏览器用户将包含上传文件的表单数据提交给PHP处理程序
2. Web服务器和PHP预处理器首先判断表单数据的大小是否超过php.ini配置文件中的post_max_size选项设置的上限值。
   若超过,PHP处理程序将无法得到任何表单数据,此时不仅上传文件失败,而且表单控件中填写的数据也会提交失败,也就是说:PHP处理程序预定义变量$_GET、$_POST、$_FILES将为空数组。
   若没有超过,文件上传进入第3步检验。
3. 检验表单中的文件大小是否超过表单隐藏域MAX_FILE_SIZE设置的上限值。
   若超过,PHP预处理器返回状态码2,文件上传失败。
   若没有超过,文件上传进入第4步检验。
   (当有多个文件进行上传时,某个文件上传框导致的文件上传失败,不会影响其他文件上传框的上传结果)
4. 检验表单中的文件是否超过php.ini配置文件中upload_max_filesize选项设置的上限值。
   若超过,PHP预处理器返回状态码1,文件上传失败。
   若没有超过,文件上传进入第5步检验。
5. PHP实现上传文件需要在php.ini配置文件upload_tmp_dir选项定义的目录中创建一个与上传文件一一对应的临时文件(默认拓展名为tmp),上传成功后,临时文件立即消失,此时PHP预处理器的返回状态码0。
   但是有时由于默写原因(如max_execution_time选项设置过小或者网速慢等原因),上传部分文件后不再继续上传剩余文件,导致文件上传失败,此时PHP预处理器返回状态码3
   若通过,文件上传进入第6步检验。
6. 实现文件上传的关键一步在于在临时文件消失前,需要将临时文件保存到Web服务器或文件服务器。PHP提供的两个函数:is_uploaded_file()函数和move_uploaded_file()函数,可以帮助完成这一步的工作


多个文件上传要注意的就是相同的name保存的文件内容是按照下面的形式放在数组中的。是五个数组,按照文件的五个参数分别存放的,并非三个数组。所以如果直接使用count($_files[‘$mypicture’]),答案为5。

立即学习PHP免费学习笔记(深入)”;

array (size=5)  'name' => 
    array (size=3)      0 => string '1.txt' (length=5)      1 => string '2.txt' (length=5)      2 => string '3.txt' (length=5)  'type' => 
    array (size=3)      0 => string 'text/plain' (length=10)      1 => string 'text/plain' (length=10)      2 => string 'text/plain' (length=10)  'tmp_name' => 
    array (size=3)      0 => string 'D:\wamp64\tmp\phpC5E8.tmp' (length=25)      1 => string 'D:\wamp64\tmp\phpC5E9.tmp' (length=25)      2 => string 'D:\wamp64\tmp\phpC5EA.tmp' (length=25)  'error' => 
    array (size=3)      0 => int 0
      1 => int 0
      2 => int 0
  'size' => 
    array (size=3)      0 => int 0
      1 => int 0
      2 => int 0
登录后复制
登录后复制

index.php文件

<form action="fileSystem.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="submit" value="提交">
</form>
登录后复制
登录后复制

fileSystem文件

<?php
    if (empty($_POST)) {        exit("提交的表单数据超过post_max_size的配置");
    }    $arr = $_FILES['myPicture'];    $file =array();    for ($i=0; $i < count($arr['name']); $i++) { 
        $file[$i]['name'] = $arr['name'][$i];        $file[$i]['type'] = $arr['type'][$i];        $file[$i]['tmp_name'] = $arr['tmp_name'][$i];        $file[$i]['error'] = $arr['error'][$i];        $file[$i]['size'] = $arr['size'][$i];
    }    for ($i=0; $i < count($file); $i++) { 
        switch ($file[$i]['error']) {            case 0:          
                $fileName = $file[$i]['name'];                $fileTemp = $file[$i]['tmp_name'];                $destination = "uploads/" . $file[$i]['name'];
                move_uploaded_file($fileTemp, $destination);                echo "上传成功";                break;            case 1:                echo "上传附件超过php.ini中的upload_max_filesize选项的限制";                break;            case 2:                echo "上传附件的大小超过了form表单MAX_FILE_SIZE选项指定的值";                break;            case 3:                echo "附件只有部分被上传";                break;            case 4:                echo "没有选择上传附件";                break;
        } 
    }   
?>
登录后复制
登录后复制

相关推荐:

php3.2实现多文件上传

一种PHP实现多文件上传的方法实例解析

实例分析PHP单文件和多文件上传

以上就是PHP如何实现多文件上传的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号