2016-04-20 3 views
0

Я хочу count номер загруженного файла, но я не могу получить ошибку, если файл не был загружен. Вот мой код для справки:Количество загруженных файлов

HTML

<input type="file" name="file[]" class="filestyle" data-buttonText="Quotation 1" multiple="multiple"> 

PHP

$total = count($_FILES['file']['name']); 
if($total > '2'){ 
    for($i=0; $i<$total; $i++){ 
     $tmpFilePath = $_FILES['file']['tmp_name'][$i]; 
     if($tmpFilePath != ""){ 
      $shortname = $_FILES['file']['name'][$i]; 
      $filePath = "uploads/" . date('d-m-Y-H-i-s').'-'.$_FILES['file']['name'][$i]; 
      if(!$msgError && move_uploaded_file($tmpFilePath, $filePath)){ 
       // insert to db and success msg 
     } 
    } 
} elseif($total < '4') {  
    $msgError[] = "Need to upload 3 Quotations";  
} 
if(isset($msgError)){ 
    $msgErrorString = implode(",",$msgError); 
    header("Location: pr_form.php?msgError=".$msgErrorString.""); 
} 

Если пользователь загрузить менее 3 файла, ошибка не будет появляться. У меня есть другие проверки для ввода пользователем. Все работает, кроме проверки файлов. Могу я узнать почему?

+0

'$ общее>«2'' Почему вы объявляете '2' в виде строки? – aldrin27

+0

удалит ''. Извините за ошибку – Amran

ответ

1

Первое: Удалите '

$total > '2' должен быть $total > 2

же с total < 4


Второй:

Это должно быть

не count($_FILES['file']['name'])


Итак, в вашей проблеме ..

, если файл не был загружен.

$total = count($_FILES); 
if($total > 2){ 
    for($i=0; $i<$total; $i++){ 
     $tmpFilePath = $_FILES['file']['tmp_name'][$i]; 
     if($tmpFilePath != ""){ 
      $shortname = $_FILES['file']['name'][$i]; 
      $filePath = "uploads/" . date('d-m-Y-H-i-s').'-'.$_FILES['file']['name'][$i]; 
      if(!$msgError && move_uploaded_file($tmpFilePath, $filePath)){ 
       // insert to db and success msg 
     } 
    } 
} elseif($total < 4 && $total > 0) {  
    $msgError = "Need to upload 3 Quotations";  
} 
elseif($total === 0){ //This condition 
    $msgError = "No chosen file."; 
} 
if(isset($msgError)){ 
    header("Location: pr_form.php?msgError=".$msgError.""); 
} 

И тогда в вашем pr_form.php, вы должны иметь что-то вроде этой линии ..

<?php 
    echo $_GET['msgError']; 
?> 
+0

Что делать, если файл не выбран? Используется один и тот же метод, или я должен использовать метод UPLOAD_ERR_NO_FILE' – Amran

+0

, если файл не выбран, 'count ($ _ FILES)' пуст .. вы можете сделать .. if (empty ($ _ FILES)) {// коды здесь ..} – rmondesilva

+0

Спасибо за помощь. Я пробовал ваши коды. Он не отправляет форму, если файлы не выбраны или не загружены менее 3 файлов, но сообщение об ошибке не отображается – Amran

Смежные вопросы