上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"属性。