PHP多文件上传操作,
程序员文章站
2022-06-10 16:14:43
...
PHP多文件上传操作,
在前一篇文章里讲到了关于PHP文件上传原理和简单操作举例是单文件上传。
http://www.cnblogs.com/lichenwei/p/3879566.html
其实多文件上传和单文件上传大同小异,原理都是一样的,只是在代码上做了点小技巧。
首先还是index.html上传表单,只是把之前上传文件表单里的file更改成了file[]
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
head>
meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
title>upload filestitle>
head>
body>
form action="upload.php" enctype="multipart/form-data" method="post">
input type="hidden" name="MAX_FILE_SIZE" value="100000" />
上传文件:input type="file" name="file[]"/>br/>
上传文件:input type="file" name="file[]"/>br/>
上传文件:input type="file" name="file[]"/>br/>
input type="submit" value="上传" />
form>
body>
html>
在upload.php用$_FILES打印看看
php
print_r($_FILES);
?>
得出下面多维数组
Array ( [file] => Array ( [name] => Array ( [0] => 照片1.jpg [1] => 照片2.jpg [2] => 照片3.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg [2] => image/jpeg ) [tmp_name] => Array ( [0] => F:\wamp\tmp\php36C7.tmp [1] => F:\wamp\tmp\php36C8.tmp [2] => F:\wamp\tmp\php36C9.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [size] => Array ( [0] => 0 [1] => 0 [2] => 0 ) ) )
按照单文件上传的原理,先想想我们需要得到什么?
很明显我们需要得到一个关于文件信息的数组,数组里包含name,type,tmp_name,error,size,而此时我们得到的是个多维数组,虽然对应的键值都存在,但它是多维的,
我们只需要把它拆分,比如上面的3个文件,我们只需要把它拆分成对应的3个文件信息数组就行了。
拆分数组的结构
Array ( [0] => Array ( [name] => 照片1.jpg [type] => image/jpeg [tmp_name] => F:\wamp\tmp\php13C1.tmp [error] => 0 [size] => 385150 ) [1] => Array ( [name] => 照片2.jpg [type] => image/jpeg [tmp_name] => F:\wamp\tmp\php13D2.tmp [error] => 0 [size] => 242043 ) [2] => Array ( [name] => 照片3.jpg [type] => image/jpeg [tmp_name] => F:\wamp\tmp\php13D3.tmp [error] => 0 [size] => 488293 ) )
下面是拆分重组数组代码
php //print_r($_FILES['file']); $arr=$_FILES['file']; $files=array(); for($i=0;$icount