За последние 24 часа нас посетили 32749 программистов и 1820 роботов. Сейчас ищут 945 программистов ...

Проблема с загрузкой файлов в Codignaiter

Тема в разделе "PHP для новичков", создана пользователем smartCreate, 7 фев 2017.

  1. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    Доброго времени суток, уважаемые знатоки:)

    Работаю с фреймворком кодигнайтер, и сегодня уперся в проблему - обработать загрузку с нескольких импутов.

    Некогда раньше не приходилось делать 2 импута для загрузки файлов в одной форме, а сейчас вот приходится. Ранее (с одним импутом type="file" в форме), делал так:

    PHP:
    1. // РАЗМЕТКА ФОРМЫ
    2. <form method="post" action="../admin_c/add_heading" enctype="multipart/form-data">
    3.         <input type="file" name="userfile" />
    4.         <button type="submit" data-active="submit">Загрузить</button>
    5. </form>
    6.  
    7. // КОНТРОЛЛЕР НА СЕРВЕРЕ
    8. function add_heading() {
    9.         $config['upload_path'] = './library/img/news/';
    10.         $config['allowed_types'] = 'gif|jpg|png|jpeg';
    11.         $config['max_size']    = '500';
    12.         $config['max_width']  = '1024';
    13.         $config['max_height']  = '768';
    14.         $config['encrypt_name']    = TRUE;
    15.         $config['remove_spaces'] = TRUE;
    16.         $this->load->library('upload', $config);
    17.        
    18.         if ( ! $this->upload->do_upload()){
    19.             echo json_encode($error = array('error' => $this->upload->display_errors('<p><i class="fa fa-exclamation-triangle" aria-hidden="true"></i><br>', '</p>')));
    20.         }else{
    21.             $image_data = $this->upload->data();
    22.             $heading['img'] = $image_data['file_name'];
    23.                    
    24.             $this->admin_model->new_heading($heading);
    25.            
    26.             echo json_encode($success = array('success' => '<p><i class="fa fa-check-square-o" aria-hidden="true"></i><br>Запись успешно опубликованна</p>'));
    27.         }
    28. }
    И было мне счастье)) А сейчас стоит задача сделать форму с 2-мя импута для загрузки, через один загружается изображение, через другой - текстовый файл...

    Беда в том что у меня даже идей нет как это можно обработать, пару часов уже сижу гуглю, но него толкового не могу найти(
    решил обратиться за советом к более опытным, натолкните пожалуйста на мысль как мне быть, буду крайне признателен!
     
  2. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Нужно слегка подредактировать форму для начала:
    HTML:
    1. <form method="post" action="../admin_c/add_heading" enctype="multipart/form-data">
    2.  
    3.         <input type="file" name="userfile[]" />
    4.         <input type="file" name="userfile[]" />
    5.         <button type="submit" data-active="submit">Загрузить</button>
    6. </form>
    7.  
    Ну а дальше почитать например здесь)
    http://www.codexworld.com/codeigniter-upload-multiple-files-images/
     
  3. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    Спасибо за внимание) стыдно признаться, но мои познания английского заканчиваеться на синтаксисе рhp, js и jq(

    Сложновато мне осилить инфу по этой ссылке, может завалялась похожая инфа на русском?)
     
  4. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Ну если ты планируешь заниматься вебом,то увы,без английского никуда. Вот парень (опять же английский вариант,поэтому скину просто код)пишет что он решил свою проблему так:

    PHP:
    1.  function do_upload()
    2. {      
    3.     $this->load->library('upload');
    4.  
    5.     $files = $_FILES;
    6.     $cpt = count($_FILES['userfile']['name']);
    7.     for($i=0; $i<$cpt; $i++)
    8.     {          
    9.         $_FILES['userfile']['name']= $files['userfile']['name'][$i];
    10.         $_FILES['userfile']['type']= $files['userfile']['type'][$i];
    11.         $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
    12.         $_FILES['userfile']['error']= $files['userfile']['error'][$i];
    13.         $_FILES['userfile']['size']= $files['userfile']['size'][$i];  
    14.  
    15.         $this->upload->initialize($this->set_upload_options());
    16.         $this->upload->do_upload();
    17.     }
    18. }
    19.  
    20. private function set_upload_options()
    21. {  
    22.     //upload an image options
    23.     $config = array();
    24.     $config['upload_path'] = './Images/';
    25.     $config['allowed_types'] = 'gif|jpg|png';
    26.     $config['max_size']      = '0';
    27.     $config['overwrite']     = FALSE;
    28.  
    29.     return $config;
    30. }