2011-09-20 47 views
3

我有这样的形式:PHP上传输入数组以及如何查找多少个文件?

<form enctype="multipart/form-data" action="upload.php" method="POST"> 
    <input type="file" name="photo[]" /> 
    <input type="file" name="photo[]" /> 
</form> 

我上传的文件用PHP这样:

function upFiles($files){ 
    for($i = 0 ; $i < $files ; $i++){ 
     $FV_filename = $_FILES['photo']['name'][$i]; 
     $fileTYPE = substr($FV_filename , -4); 
     move_uploaded_file($_FILES['photo']['tmp_name'][$i], uniqid().$fileTYPE); 
    } 
} 

upFiles($_POST['howManyFiles']); 

正如你可以看到我从客户端多少个文件已发送得到。 我想要做的是检查服务器端有多少文件已收到。 我该怎么做?有没有建立在PHP功能,如果不是那么如何创建一个?

回答

3
count($_FILES['photo']['name']); 

应该工作。或者,只是重写你for循环到foreach

foreach ($_FILES as $name => $file) { 
    var_dump($file); 
    // process file... 
} 
+0

您能详细介绍一下在foreach?什么包含$ name和$ file? –

+0

'$ name'是输入名称,'$ file'是一个包含名称,tmp_name,etcetara的数组。你总是可以使用'var_dump()'来找出变量中的内容;我已更新我的示例以向您展示如何。 – Rijk

+0

谢谢你,帮了我很多! –

0

您可以检查该文件是否已经上传与is_uploaded_file,就像这样:

function upFiles($files){ 
    for($i = 0 ; $i < $files ; $i++){ 
     if (is_uploaded_file($_FILES['photo']['tmp_name'][$i])) { 
      // uploaded file 
     } 
    } 
} 

你可以在所有上传的使用foreach循环照片,而不是使用幻数

来源:php.net

+0

更容易检查'$ _FILES ['photo'] ['error'] [$ i] === UPLOAD_ERR_OK'。 –

0

迭代的$ _FILES数组了:

function upFiles($baseVarName){ 

    foreach($_FILES[ $baseVarName ] as $fileDetails) { 

     $FV_filename = $fileDetails['name'][$i]; 
     $fileTYPE = substr($FV_filename , -4); 
     move_uploaded_file($fileDetails['tmp_name'][$i], uniqid().$fileTYPE); 

    } 

} 

upFiles('photo'); 
相关问题