PHP同时上传“多个”文件示例,并格式化$_FILES数组信息
2016-07-17 08:33
781 查看
方法1:
在html表单,放置多个文件选择框, 使用数组名作为组件的名字,如下:
在服务器端我们可以测试一下提交的信息
输出结果:
方法2:
在html端为每一个input框给一个不同的name
服务端“print_r($_FILES);” 后,输出的信息:
所以,针对下面这个“综合性”上传表单:
服务端接收到的数据为:
问题:上面的 $_FILES 信息有点乱,可以写个函数/方法来格式化下,参考代码如下:
经过 format_files($_FILES); 处理后,结果被格式化为:
延伸阅读:
PHP上传(单个)文件示例
在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 ) )
延伸阅读:
PHP上传(单个)文件示例
相关文章推荐
- PHP的继承方法如何获取子类名?get_class() 和 get_called_class()
- PHP中curl的CURLOPT_POSTFIELDS参数使用细节
- PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据
- PHP下载/采集远程图片到本地
- 【问底】徐汉彬:PHP7和HHVM的性能之争
- Github上的PHP资源汇总大全
- PHP 正则表达式匹配函数 preg_match 与 preg_match_all
- PHP合并2个数字键数组的值
- 编译安装 Zend Opcache 缓存Opcache,加速 PHP
- php.ini中有关安全的设置
- 性能优化大全
- Yii rules常用规则(转)
- PHP如何生成验证码
- NumbrtPicker扩展方法
- PHP之路——Mysql多表查询
- php设计模式-单例模式
- 一个PHP+Mysql手工注入例子
- phpcms 模板页面
- thinkphp3.2.3学习笔记——获取thinkphp以及创建项目
- php模块编译