PHP多文件上传

简介:

上传文件HTML的输入标签FILE类型中的名称后要加[],作用是在HTML中向PHP建立数组,比如名称为pictures,多文件引用名称则为pictures[],实例如下: 
代码:
 

 
  1. <form action="upload.php" method="post" enctype="multipart/form-data"> 
  2. <p> 
  3. <input type="file" name="pictures[]" /><br /> 
  4. <input type="file" name="pictures[]" /><br /> 
  5. <input type="file" name="pictures[]" /><br /> 
  6. <input type="submit" value="上传" /> 
  7. </p> 
  8. </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\\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 的大小,依此类推





      本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/926896,如需转载请自行联系原作者




相关文章
原生php自定义表单(支持基本类型+file多文件上传)
原生php自定义表单(支持基本类型+file多文件上传)
|
PHP
PHP多文件分片压缩下载实现的详细介绍(二)
在上一篇博客中写了一个先压缩后分片下载的demo,但是存在一定的缺点,本篇介绍的是先分片然后放入压缩包最后再分片下载
100 0
|
Web App开发 PHP 索引
***使用PHP实现文件上传和多文件上传
http://www.365mini.com/page/php-upload-file.htm 在PHP程序开发中,文件上传是一个使用非常普遍的功能,也是PHP程序员的必备技能之一。值得高兴的是,在PHP中实现文件上传功能要比在Java、C#等语言中简单得多。
1121 0
|
3月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
3月前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
156 9
|
4月前
|
存储 SQL 关系型数据库
PHP与MySQL交互的奥秘
【8月更文挑战第29天】在编程的世界里,PHP和MySQL就像是一对默契的舞伴,共同演绎着数据的交响曲。本文将带你探索它们之间的互动,从连接数据库到执行查询,再到处理结果,每一步都充满了节奏与和谐。我们将一起走进这段代码的旅程,感受数据流动的魅力。
|
21天前
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实践指南####
深入探索PHP与MySQL结合的魅力,本文旨在通过一系列实战案例,揭示如何高效构建动态交互式网站。从环境搭建到代码实现,全方位解析两者协同工作的原理与技巧,为开发者提供一条清晰的学习路径。 ####
|
26天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1