方法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
)
)
延伸阅读: