PHP从入门到精通(第5版)
上QQ阅读APP看书,第一时间看更新

7.13 综合运用数组函数实现多文件上传

【例7.16】本例综合运用数组函数,实现同时将任意多个文件上传到服务器的功能。这里文件的上传使用的是move_uploaded_file()函数,使用array_push()函数向数组中添加元素,使用array_unique()函数删除数组中的重复元素,使用array_pop()函数获取数组中最后一个元素,并将数组长度减1,使用count()函数获取数组的元素个数。实例代码如下:(实例位置:资源包\TM\sl\7\16

(1)在index.php文件中创建表单,指定使用post方法提交数据,设置enctype="multipart/form-data"属性,添加表单元素,完成文件的提交操作。

    <form action="index_ok.php" method="post" enctype="multipart/form-data" name="form1">
            <tr>
              <td width="88" height="30" align="right" class="STYLE1">内容1:</td>
              <td width="369"><input name="picture[]" type="file" id="picture[]" size="30"></td>
              </tr>
            …//省略了部分代码
            <tr>
              <td height="30" align="right" class="STYLE1">内容5:</td>
              <td><input name="picture[]" type="file" id="picture[]" size="30"></td>
              </tr>
            <tr>
              <td><input type="image" name="imageField" src="images/02-03 (3).jpg"></td>
              </tr>
          </form>

(2)在index_ok.php文件中,通过$_FILES预定义变量获取表单提交的数据,通过数组函数完成对上传文件元素的计算。

(3)使用move_uploaded_file()函数将上传文件添加到服务器指定文件夹下。

    <?php
        if(!is_dir("./upfile")){  //判断服务器中是否存在指定文件夹
             mkdir("./upfile");                           //如果不存在,则创建文件夹
        }
        $array=array_unique($_FILES["picture"]["name"]);  //删除数组中重复的值
        foreach($array as $k=>$v){                        //根据元素个数执行foreach循环
             $path="upfile/".$v;                          //定义上传文件存储位置
             if($v){                                      //判断上传文件是否为空
                  if(move_uploaded_file($_FILES["picture"]["tmp_name"][$k],$path)){//执行文件上传操作
                      $result=true;
                  }else{
                      $result=false;
                  }
             }
        }
        if($result==true){
                  echo "文件上传成功,请稍等...";
                  echo "<meta http-equiv=\"refresh\" content=\"3; url=index.php\">";
        }else{
                  echo "文件上传失败,请稍等...";
                  echo "<meta http-equiv=\"refresh\" content=\"3; url=index.php\">";
        }
    ?>

运行结果如图7.5所示。

图7.5 在多文件上传中应用数组函数

注意

通过POST方法实现多文件上传,在创建form表单时,必须指定enctype="multipart/form-data"属性。