PHP多文件上传
发布:smiling 来源: PHP粉丝网 添加日期:2013-12-09 14:58:19 浏览: 评论: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 脚本,还可以给数组分配指定的键名:
- <input name="AnotherArray[]" />
- <input name="AnotherArray[]" />
- <input name="AnotherArray[email]" />
- <input name="AnotherArray[phone]" />
AnotherArray 数组将包含键名 0,1,email 和 phone。
注意:指定数组的键名是 HTML 的可选项。如果不指定键名,则数组被按照单元在表单中出现的顺序填充。第一个例子将包含键名 0,1,2,3。
以上HTML点击上传后,通过$_FILES超级全局变量进行读取,$_FILES将会把HTTP POST 方法传递上来的文件信息组合成数组,一个文件数组形式为二维。二个以上文件数组形式为三维。
$_FILES的使用方法:
$_FILES['userfile']['name'] 客户端机器文件的原名称。
$_FILES['userfile']['type'] 文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值。
$_FILES['userfile']['size'] 已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error']
下面是一个文件上传,此文件上传后$_FILES数组内将会产生其信息,因为是一个文件所以是二维的,为了便于大家理解我们将$_FILES用PRINT_R输出查看其结构,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\tmpphp64.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\tmpphp47.tmp
- [1] => D:EasyPHP\tmpphp48.tmp
- [2] => D:EasyPHP\tmpphp49.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 的大小,依此类推.
Tags: PHP 文件上传
相关文章
- ·php实现文件上传的程序代码(2013-11-13)
- ·php 实现多文件上传程序代码(2013-11-13)
- ·php+CKFinder上传中文名文件乱码问题的解决方法(2013-11-14)
- ·php中检测上传文件类型与上传图片大小代码(2013-11-14)
- ·php上传图片失败原图(2013-11-28)
- ·CKEditor+CKFinder+php上传文件配置方法(2013-12-02)
- ·php 文件上传实例代码(2013-12-16)
- ·php文件上传程序(2013-12-16)
- ·php初学者用文件上传实例(2013-12-23)
- ·php上传文件与图片重命名方法总结(2014-01-06)
- ·如何设置PHP上传文件大小限制(2014-01-06)
- ·PHP文件下载的小实例(2014-01-11)
- ·php获取上传文件名的文件类型(2014-01-15)
- ·多图片上传的php代码(2014-01-15)
- ·php文件上传之php.ini配置上传文件详解(2014-03-02)
- ·PHP文件上传详解(2014-03-02)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)