проверить, был ли загружен хотя бы один файл php - PullRequest
1 голос
/ 10 апреля 2011

У меня есть форма для загрузки нескольких файлов:

 <?php
    $num_uploads = 3;
    $num = 0;
    while($num < $num_uploads)
    {
        echo '<div><input name="userfile[]" type="file" /></div>';
        $num++;
    }
 ?>

Как проверить, был ли хотя бы один файл отправлен с помощью PHP или JavaScript?

Ответы [ 3 ]

0 голосов
/ 10 апреля 2011

Попробуйте это,

$i = 0;
foreach ($_FILES as $file){
    if($file['size'] > 0){
         $i++;
    }        
}

теперь, если $i > 0 загружен хотя бы один файл. $i - общее количество загруженных файлов.

0 голосов
/ 10 апреля 2011

Учитывая, как вы строите форму, вам придется учесть причуду в том, как 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 снова обременял мир чрезмерно запутанной и громоздкой глупостью.

0 голосов
/ 10 апреля 2011
<?php
if (count($_FILES)) {
    // at least 1 file
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...