2015-03-10 7 views
0

Я пытаюсь создать форму, с помощью которой пользователь может загружать несколько файлов изображений.

Я все еще нахожусь в самом начале, и я знаю, что этот код очень небезопасен. Сначала я хотел бы иметь возможность загружать фотографии, а затем потом добавлю остальные.
Я работаю в структуре MVC, и я не использую никаких CMS или классной работы.

Вид
Загрузка нескольких файлов с использованием одной формы

 <form action="<?php echo Config::get('URL'); ?>image/uploadImages_action" method="post" enctype="multipart/form-data"> 
      <input type="file" name="images[]" multiple required /> 
      <input type="submit" value="Upload images" /> 
     </form> 

Контроллер

/** 
    * Upload images 
    */ 
    public function uploadImages_action() 
    { 
     Auth::checkAuthentication(); 
     ImageModel::uploadImages(); 
     Redirect::to('login/showProfile'); 
    } 

Модель

public static function uploadImages() 
    { 
     if (!empty($_FILES['images']['name'])) { 

      $files = $_FILES['images']; 

      $allowed = array('jpg', 'png', 'gif', 'jpeg'); 

      foreach ($files['name'] as $position => $file_name) { 
       $file_tmp = $files['tmp_name'][$position]; 
       $file_size = $files['size'][$position]; 

       $file_ext = explode('.', $file_name); 
       $file_ext = strtolower(end($file_ext)); 

       $file_name_new = uniqid('', true) . '.' . $file_ext; 
       $file_destination = 'uploads/' . $file_name_new; 

       if (move_uploaded_file($file_tmp, $file_destination)) { 
        echo 'Image successfully uploaded.'; 
        return true; 
       } 
      } 
     } 
    } 


Этот код ведет себя очень странно. Я могу загрузить некоторые фотографии, а другие нет, и я могу загружать только одну фотографию за раз. Если я выберу более одного изображения, он загрузит последний из них.

Я был бы очень рад за любую помощь. Я застрял в этом от часов!

ответ

1

Вы прекратите выполнение цикла после запуска возврата, как в инструкции if вашей модели. Вот почему вы можете загружать только одно изображение. Удаление этого утверждения, вероятно, исправит это.

+0

Большое вам спасибо! Это сработало! Теперь я все еще не могу загрузить некоторые фотографии, но, по крайней мере, я на один шаг дальше! Огромное спасибо!! – Schwesi

+1

Поскольку мне не хватает репутации, чтобы прокомментировать ваш вопрос, я попрошу здесь: не могли бы вы уточнить, какие файлы вы не можете загрузить? –

+0

У меня есть два файла, которые идентичны, кроме их размера. Оба файла .jpg. Тот, который может быть загружен, составляет 84 КБ, тот, который не работает, составляет 5 МБ. Я уже снял лимит в моем php.ini до 40M, и у меня нет ограничений в моем коде. Я также не получаю сообщение об ошибке. – Schwesi

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