PHP同时上传“多个”文件示例,并格式化$_FILES数组信息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP同时上传“多个”文件示例,并格式化$_FILES数组信息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5395字,纯文字阅读大概需要8分钟。
内容图文
方法1:
在html表单,放置多个文件选择框, 使用数组名作为组件的名字,如下:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="upfile[]"/> <input type="file" name="upfile[]"/> <input type="file" name="upfile_2[]"/> <input type="file" name="upfile_2[]"/> </form>
在服务器端我们可以测试一下提交的信息
<?php print_r($_FILES); ?>
输出结果:
Array ( [upfile] => Array ( [name] => Array ( [0] => C函数速查.chm [1] => JDK_API_1_6中文帮助.CHM ) [type] => Array ( [0] => application/octet-stream [1] => application/octet-stream ) [tmp_name] => Array ( [0] => D:\PHP\xampp2\tmp\phpF7E1.tmp [1] => D:\PHP\xampp2\tmp\phpF7E2.tmp ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 98791 [1] => 36830335 ) ) [upfile_2] => Array ( [name] => Array ( [0] => jquery1.7.2中文手册.chm [1] => jQuery1.8.3中文手册.chm ) [type] => Array ( [0] => application/octet-stream [1] => application/octet-stream ) [tmp_name] => Array ( [0] => D:\PHP\xampp2\tmp\phpF93A.tmp [1] => D:\PHP\xampp2\tmp\phpF93B.tmp ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 306357 [1] => 405941 ) ) )
方法2:
在html端为每一个input框给一个不同的name
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="upfile_1"/> <input type="file" name="upfile_2"/> <input type="file" name="upfile_3"/> </form>
服务端“print_r($_FILES);” 后,输出的信息:
Array ( [upfile_1] => Array ( [name] => C函数速查.chm [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\php2247.tmp [error] => 0 [size] => 98791 ) [upfile_2] => Array ( [name] => JDK_API_1_6中文帮助.CHM [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\php2248.tmp [error] => 0 [size] => 36830335 ) [upfile_3] => Array ( [name] => jquery1.7.2中文手册.chm [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\php23B0.tmp [error] => 0 [size] => 306357 ) )
所以,针对下面这个“综合性”上传表单:
<form action="upload.php" method="post" enctype="multipart/form-data" > <input type="file" name="upfile[]"/> <input type="file" name="upfile[]"/> <input type="file" name="upfile_2[]"/> <input type="file" name="upfile_2[]"/> <input type="file" name="upfile_3"/> <input type="file" name="upfile_4"/> </form>
服务端接收到的数据为:
Array ( [upfile] => Array ( [name] => Array ( [0] => C函数速查.chm [1] => JDK_API_1_6中文帮助.CHM ) [type] => Array ( [0] => application/octet-stream [1] => application/octet-stream ) [tmp_name] => Array ( [0] => D:\PHP\xampp2\tmp\php4440.tmp [1] => D:\PHP\xampp2\tmp\php4441.tmp ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 98791 [1] => 36830335 ) ) [upfile_2] => Array ( [name] => Array ( [0] => jquery1.7.2中文手册.chm [1] => jQuery1.8.3中文手册.chm ) [type] => Array ( [0] => application/octet-stream [1] => application/octet-stream ) [tmp_name] => Array ( [0] => D:\PHP\xampp2\tmp\php459A.tmp [1] => D:\PHP\xampp2\tmp\php459B.tmp ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 306357 [1] => 405941 ) ) [upfile_3] => Array ( [name] => php_manual_zh.chm [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\php459C.tmp [error] => 0 [size] => 31019182 ) [upfile_4] => Array ( [name] => TIPI深入理解PHP内核_2014-04-29_V0.8.3.chm [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\php4687.tmp [error] => 0 [size] => 1304181 ) )
问题:上面的 $_FILES 信息有点乱,可以写个函数/方法来格式化下,参考代码如下:
function format_files($files) { $fileArray = array(); $n = 0; foreach ($files as $key => $file) { if (is_array($file[‘name‘])) { $keys = array_keys($file); $count = count($file[‘name‘]); for ($i = 0; $i < $count; $i++) { $fileArray[$n][‘key‘] = $key; foreach ($keys as $_key) { $fileArray[$n][$_key] = $file[$_key][$i]; } $n++; } } else { $fileArray[$n] = $file; $fileArray[$n][‘key‘] = $key; $n++; } } return $fileArray; }
经过 format_files($_FILES); 处理后,结果被格式化为:
Array ( [0] => Array ( [key] => upfile [name] => C函数速查.chm [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\phpF27F.tmp [error] => 0 [size] => 98791 ) [1] => Array ( [key] => upfile [name] => JDK_API_1_6中文帮助.CHM [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\phpF280.tmp [error] => 0 [size] => 36830335 ) [2] => Array ( [key] => upfile_2 [name] => jquery1.7.2中文手册.chm [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\phpF3C9.tmp [error] => 0 [size] => 306357 ) [3] => Array ( [key] => upfile_2 [name] => jQuery1.8.3中文手册.chm [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\phpF3CA.tmp [error] => 0 [size] => 405941 ) [4] => Array ( [name] => php_manual_zh.chm [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\phpF3CB.tmp [error] => 0 [size] => 31019182 [key] => upfile_3 ) [5] => Array ( [name] => TIPI深入理解PHP内核_2014-04-29_V0.8.3.chm [type] => application/octet-stream [tmp_name] => D:\PHP\xampp2\tmp\phpF4C6.tmp [error] => 0 [size] => 1304181 [key] => upfile_4 ) )
原文:http://www.cnblogs.com/qingsong/p/5003720.html
内容总结
以上是互联网集市为您收集整理的PHP同时上传“多个”文件示例,并格式化$_FILES数组信息全部内容,希望文章能够帮你解决PHP同时上传“多个”文件示例,并格式化$_FILES数组信息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。