PHP从入门到精通(第4版)(软件开发视频大讲堂)
上QQ阅读APP看书,第一时间看更新

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

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

首先,在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>

然后,在index_ok.php文件中,通过$_FILES预定义变量获取表单提交的数据,通过数组函数完成对上传文件元素的计算,最后使用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"属性。