检查是否至少有一个文件被上传PHP
问题描述:
我有一个表格上传多个文件:检查是否至少有一个文件被上传PHP
<?php
$num_uploads = 3;
$num = 0;
while($num < $num_uploads)
{
echo '<div><input name="userfile[]" type="file" /></div>';
$num++;
}
?>
我如何检查是否至少有一个文件是用PHP或JavaScript提交?
答
鉴于您如何构建表单,您必须考虑PHP构建文件数组的方式。
foreach($_FILES['userfile']['error'] as $key => $err) {
if ($err === UPLOAD_ERR_OK) {
... got at least one file ...
}
}
出于某种原因鲁钝,而不是内$_FILES
它自己单独的子阵列中存储的每个文件的上传数据,选择采用PHP,而不是传播每个单独的错误/名/ 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已经再次背负世界用过于复杂和愚蠢笨拙。
答
<?php
if (count($_FILES)) {
// at least 1 file
}
?>
答
试试这个,
$i = 0;
foreach ($_FILES as $file){
if($file['size'] > 0){
$i++;
}
}
现在如果$i > 0
至少一个文件被上传。 $i
是上传的文件总数。
+0
如果用户想要上传零字节文件?请检查'$ file ['error'] === UPLOAD_ERR_OK',如果上传正常工作,则无论文件大小如何,都将保证为真。 – 2011-04-10 02:33:29
这不是PHP,而是你。这是你命名你的输入。所以,只怪你自己 – 2011-04-10 03:27:44
我不会这样命名我的输入。但是,这并没有改变这个事实,即这是一种无法获得文件细节的方式。 – 2011-04-10 13:54:50