2011-09-20 48 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'); 
相關問題