php 格式化 $_FILES,PHP同时上传“多个”文件示例,并格式化$_FILES数组信息

本文介绍了如何处理HTML表单中多文件上传的 $_FILES 数组,提供了一种方法将杂乱的文件信息格式化,便于后续服务器端处理。通过函数`format_files`,复杂数据被组织成清晰的结构,便于分析和操作。
摘要由CSDN通过智能技术生成

方法1:

在html表单,放置多个文件选择框, 使用数组名作为组件的名字,如下:

在服务器端我们可以测试一下提交的信息

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

服务端“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

)

)

所以,针对下面这个“综合性”上传表单:

服务端接收到的数据为:

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

)

)

延伸阅读:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值