我有一个表单上传多个文件:
<?php
$num_uploads = 3;
$num = 0;
while($num < $num_uploads)
{
echo '<div><input name="userfile[]" type="file" /></div>';
$num++;
}
?>
如何检查是否至少有一个文件是使用PHP或JavaScript提交的?
答案 0 :(得分:0)
<?php
if (count($_FILES)) {
// at least 1 file
}
?>
答案 1 :(得分:0)
试试这个,
$i = 0;
foreach ($_FILES as $file){
if($file['size'] > 0){
$i++;
}
}
现在,如果$i > 0
至少上传了一个文件。 $i
是上传文件的总数。
答案 2 :(得分:0)
鉴于你是如何构建表单的,你将不得不考虑PHP构建文件数组的方式。
foreach($_FILES['userfile']['error'] as $key => $err) {
if ($err === UPLOAD_ERR_OK) {
... got at least one file ...
}
}
出于某些愚蠢的原因,PHP不选择将每个文件的上传数据存储在$_FILES
内的自己的单独子数组中,而是选择在常规类别中传播每个单独的错误/名称/ tmp_name / etc ...像这样:
$_FILES = array(
'userfile' => array(
'name' => array(
0 => 'name of file #1'
1 => "name of file #2'
etc...
),
'tmp_name' => array(
0 => 'temp name of file #1'
1 => 'temp name of file #2'
etc.. etc... etc..
)
);
一个更合理,更容易理解的版本将是
$_FILES = array(
'userfile' => array(
0 => array(
'name' => 'name of file #1'
'tmp_name' => 'temp name of file #1'
...
),
1 => array(
'name' => 'name of file #2'
'tmp_name' => 'temp name of file #2'
...
但是,唉,PHP再一次让世界背负着过于复杂和笨重的愚蠢行为。