PHP多文件上传我的理解总结php
php函数 2009-08-03 21:37 阅读26 评论0 字号: 大大 中中 小小 数组
多文件上传是PHP中一基础应用,在此把相关知识向你们详细介绍一下,本人水平有限,还请多提意见。你们一块儿进步。
上传文件HTML的输入标签FILE类型中的名称后要加[],做用是在HTML中向PHP创建数组,好比名称为pictures,多文件引用名称则为pictures[],实例以下:
代码:
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>
<input type="file" name="pictures[]" /><br />
<input type="file" name="pictures[]" /><br />
<input type="file" name="pictures[]" /><br />
<input type="submit" value="上传" />
</p>
</form> //手册中实例。
利用HTML文件创建数组的方法手册中是这样讲解的:浏览器
要使你的 <form> 结果被当成 array 发送到 PHP 脚本,要对 <input>,<select> 或者 <textarea> 单元这样命名:
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyArray[]" />
注意变量名后的方括号,这使其成为一个数组。并发
能够经过给不一样的单元分配相同的名字来把单元分组到不一样的数组里:
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyOtherArray[]" />
<input name="MyOtherArray[]" />
这将产生两个数组,MyArray 和 MyOtherArray,并发送给 PHP 脚本。app
还能够给数组分配指定的键名:
<input name="AnotherArray[]" />
<input name="AnotherArray[]" />
<input name="AnotherArray[email]" />
<input name="AnotherArray[phone]" />
AnotherArray 数组将包含键名 0,1,email 和 phone。 函数
注意: 指定数组的键名是 HTML 的可选项。若是不指定键名,则数组被按照单元在表单中出现的顺序填充。第一个例子将包含键名 0,1,2,3。post
以上HTML点击上传后,经过$_FILES超级全局变量进行读取,$_FILES将会把HTTP POST 方法传递上来的文件信息组合成数组,一个文件数组形式为二维。二个以上文件数组形式为三维。orm
$_FILES的使用方法:
$_FILES['userfile']['name']
客户端机器文件的原名称。
$_FILES['userfile']['type'] 文件的 MIME 类型,若是浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,所以不要想固然认为有这个值。
$_FILES['userfile']['size'] 已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error'] ip
下面是一个文件上传,此文件上传后$_FILES数组内将会产生其信息,由于是一个文件因此是二维的,为了便于你们理解咱们将$_FILES用PRINT_R输出查看其结构。input
HTML文件:
代码:
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>
<input type="file" name="pictures" /><br />
<input type="submit" value="上传" />
</p>
</form>
PHP接收文件:
代码:
<?php
print_r($_FILES);
?>
将其令存为UPLOAD.PHP,运行上面的HTML选择一个文件上传,好比文件名为Thumbs.db,在IE浏览器内单击“查看”,“源代码”。显示以下:
Array
(
[pictures] => Array
(
[name] => Thumbs.db //原文件名
[type] => application/octet-stream //文件类型
[tmp_name] => D:\EasyPHP\\tmp\php64.tmp //临时存储目录及文件名
[error] => 0 //错误代码 0为上传成功
[size] => 23040 //文件大小
)
)根据此信息,结合上面$_FILES的使用方法,你们应该能理解的更深入一些。
下面看一下多文件上传,三个文件名分别为FILE1.TXT,FILE2.TXT,FILE3.TXT,而后用PRINT_R输出查看其结构:
HTML文件代码:
代码:
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>
<input type="file" name="pictures[]" /><br />
<input type="file" name="pictures[]" /><br />
<input type="file" name="pictures[]" /><br />
<input type="submit" value="上传" />
</p>
</form>
PHP接收文件代码:
<?php
print_r($_FILES);
?>
查看源文件:
Array ( [pictures] => Array ( [name] => Array ( [0] => file1.txt [1] => file2.txt [2] => file3.txt ) [type] => Array ( [0] => application/octet-stream [1] => application/octet-stream [2] => application/octet-stream ) [tmp_name] => Array ( [0] => D:\EasyPHP\\tmp\php47.tmp [1] => D:\EasyPHP\\tmp\php48.tmp [2] => D:\EasyPHP\\tmp\php49.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [size] => Array ( [0] => 94289 [1] => 65536 [2] => 102400 ) ) ) 假设名为 /file1.txt 和 /file2.txt 的文件被提交,则 $_FILES['pictures']['name'][0] 的值将是 file1.txt,而 $_FILES['pictures']['name'][1] 的值将是 file2.txt。相似的,$_FILES['file2.txt']['size'][0] 将包含文件 file1.txt 的大小,依此类推