Загрузка нескольких файлов (Массив )с помощью CodeIgniter 2.0

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

Вот мой контроллер загрузки

<?php

class Upload extends CI_Controller {

function __construct()
{
    parent::__construct();
    $this->load->helper(array('form', 'url','html'));
}

function index()
{    
    $this->load->view('pages/uploadform', array('error' => ' ' ));
}

function do_upload()
{
    $config['upload_path'] = './Images/';
    $config['allowed_types'] = 'gif|jpg|png';


    $this->load->library('upload');

 foreach($_FILES['userfile'] as $key => $value)
    {

        if( ! empty($key['name']))
        {

            $this->upload->initialize($config);

            if ( ! $this->upload->do_upload($key))
            {
                $error['error'] = $this->upload->display_errors();

                $this->load->view('pages/uploadform', $error);
            }    
            else
            {
                $data[$key] = array('upload_data' => $this->upload->data());

                $this->load->view('pages/uploadsuccess', $data[$key]);


            }
         }

    }    
  }    
 }
 ?> 

Моя форма загрузки это.

 <html>
 <head>
    <title>Upload Form</title>
</head>
<body>

<?php echo $error;?>

<?php echo form_open_multipart('upload/do_upload');?>

<input type="file" multiple name="userfile[]" size="20" />
<br /><br />


<input type="submit" value="upload" />

</form>

</body>
</html> 

У меня просто продолжает появляться эта ошибка:

You did not select a file to upload.

Вот массив примера:

Array ( [userfile] => Array ( [name] => Array ( [0] => youtube.png [1] => zergling.jpg ) [type] => Array ( [0] => image/png [1] => image/jpeg ) [tmp_name] => Array ( [0] => E:\wamp\tmp\php7AC2.tmp [1] => E:\wamp\tmp\php7AC3.tmp ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 35266 [1] => 186448 ) ) )

У меня такое бывает 5 раз подряд, если я выбираю 2 файла. Я также использую стандартную библиотеку Upload.

29
задан Rakesh Patil 8 March 2014 в 19:29
поделиться

15 ответов

Мне наконец удалось заставить его работать с вашей помощью!

Вот мой код:

 function do_upload()
{       
    $this->load->library('upload');

    $files = 

Мне наконец удалось заставить его работать с вашей помощью!

Вот мой код:

[110]

Спасибо, ребята!

FILES; $cpt = count(

Мне наконец удалось заставить его работать с вашей помощью!

Вот мой код:

[110]

Спасибо, ребята!

FILES['userfile']['name']); for($i=0; $i<$cpt; $i++) {

Мне наконец удалось заставить его работать с вашей помощью!

Вот мой код:

[110]

Спасибо, ребята!

FILES['userfile']['name']= $files['userfile']['name'][$i];

Мне наконец удалось заставить его работать с вашей помощью!

Вот мой код:

[110]

Спасибо, ребята!

FILES['userfile']['type']= $files['userfile']['type'][$i];

Мне наконец удалось заставить его работать с вашей помощью!

Вот мой код:

[110]

Спасибо, ребята!

FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];

Мне наконец удалось заставить его работать с вашей помощью!

Вот мой код:

[110]

Спасибо, ребята!

FILES['userfile']['error']= $files['userfile']['error'][$i];

Мне наконец удалось заставить его работать с вашей помощью!

Вот мой код:

[110]

Спасибо, ребята!

FILES['userfile']['size']= $files['userfile']['size'][$i]; $this->upload->initialize($this->set_upload_options()); $this->upload->do_upload(); } } private function set_upload_options() { //upload an image options $config = array(); $config['upload_path'] = './Images/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '0'; $config['overwrite'] = FALSE; return $config; }

Спасибо, ребята!

97
ответ дан Cassandra 8 March 2014 в 19:29
поделиться

Я недавно работал над этим. Попробуйте эту функцию:

/**
 * @return array an array of your files uploaded.
 */
private function _upload_files($field='userfile'){
    $files = array();
    foreach( 

Я недавно работал над этим. Попробуйте эту функцию:

[110]

в вашем случае:

<input type="file" multiple name="images[]" size="20" />

или

<input type="file" name="images[]">
<input type="file" name="images[]">
<input type="file" name="images[]">

в контроллере:

public function do_upload(){
    $config['upload_path'] = './Images/';
    $config['allowed_types'] = 'gif|jpg|png';
    //...

    $this->load->library('upload',$config);

    if (

Я недавно работал над этим. Попробуйте эту функцию:

[110]

в вашем случае:

[111]

или

[112]

в контроллере:

[113]

Некоторые Базовая ссылка из руководства по PHP: Загрузка PHP-файла

FILES['images']) { $images= $this->_upload_files('images'); print_r($images); } }

Некоторые Базовая ссылка из руководства по PHP: Загрузка PHP-файла

FILES[$field] as $key => $all ) foreach( $all as $i => $val ) $files[$i][$key] = $val; $files_uploaded = array(); for ($i=0; $i < count($files); $i++) {

Я недавно работал над этим. Попробуйте эту функцию:

[110]

в вашем случае:

<input type="file" multiple name="images[]" size="20" />

или

<input type="file" name="images[]">
<input type="file" name="images[]">
<input type="file" name="images[]">

в контроллере:

public function do_upload(){
    $config['upload_path'] = './Images/';
    $config['allowed_types'] = 'gif|jpg|png';
    //...

    $this->load->library('upload',$config);

    if (

Я недавно работал над этим. Попробуйте эту функцию:

[110]

в вашем случае:

[111]

или

[112]

в контроллере:

[113]

Некоторые Базовая ссылка из руководства по PHP: Загрузка PHP-файла

FILES['images']) { $images= $this->_upload_files('images'); print_r($images); } }

Некоторые Базовая ссылка из руководства по PHP: Загрузка PHP-файла

FILES[$field] = $files[$i]; if ($this->upload->do_upload($field)) $files_uploaded[$i] = $this->upload->data($files); else $files_uploaded[$i] = null; } return $files_uploaded; }

в вашем случае:

<input type="file" multiple name="images[]" size="20" />

или

<input type="file" name="images[]">
<input type="file" name="images[]">
<input type="file" name="images[]">

в контроллере:

public function do_upload(){
    $config['upload_path'] = './Images/';
    $config['allowed_types'] = 'gif|jpg|png';
    //...

    $this->load->library('upload',$config);

    if (

Я недавно работал над этим. Попробуйте эту функцию:

[110]

в вашем случае:

[111]

или

[112]

в контроллере:

[113]

Некоторые Базовая ссылка из руководства по PHP: Загрузка PHP-файла

FILES['images']) { $images= $this->_upload_files('images'); print_r($images); } }

Некоторые Базовая ссылка из руководства по PHP: Загрузка PHP-файла

-1
ответ дан heychez 8 March 2014 в 19:29
поделиться

Сохраните, а затем переопределите переменную $ _FILES для всего, что вам нужно. возможно, не лучшее решение, но это сработало для меня.

function do_upload()
{

    $this->load->library('upload');
    $this->upload->initialize($this->set_upload_options());

    $quantFiles = count(

Сохраните, а затем переопределите переменную $ _FILES для всего, что вам нужно. возможно, не лучшее решение, но это сработало для меня.

[110]

}

отдельная функция для установки конфигурации.

private function set_upload_options()
{   
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'xml|pdf';
    $config['max_size'] = '10000';

    return $config;
}
FILES['userfile']['name']); for($i = 0; $i < $quantFiles ; $i++) { $arquivo[$i] = array ( 'userfile' => array ( 'name' =>

Сохраните, а затем переопределите переменную $ _FILES для всего, что вам нужно. возможно, не лучшее решение, но это сработало для меня.

[110]

}

отдельная функция для установки конфигурации.

private function set_upload_options()
{   
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'xml|pdf';
    $config['max_size'] = '10000';

    return $config;
}
FILES['userfile']['name'][$i], 'type' =>

Сохраните, а затем переопределите переменную $ _FILES для всего, что вам нужно. возможно, не лучшее решение, но это сработало для меня.

[110]

}

отдельная функция для установки конфигурации.

private function set_upload_options()
{   
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'xml|pdf';
    $config['max_size'] = '10000';

    return $config;
}
FILES['userfile']['type'][$i], 'tmp_name' =>

Сохраните, а затем переопределите переменную $ _FILES для всего, что вам нужно. возможно, не лучшее решение, но это сработало для меня.

[110]

}

отдельная функция для установки конфигурации.

private function set_upload_options()
{   
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'xml|pdf';
    $config['max_size'] = '10000';

    return $config;
}
FILES['userfile']['tmp_name'][$i], 'error' =>

Сохраните, а затем переопределите переменную $ _FILES для всего, что вам нужно. возможно, не лучшее решение, но это сработало для меня.

[110]

}

отдельная функция для установки конфигурации.

private function set_upload_options()
{   
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'xml|pdf';
    $config['max_size'] = '10000';

    return $config;
}
FILES['userfile']['error'][$i], 'size' =>

Сохраните, а затем переопределите переменную $ _FILES для всего, что вам нужно. возможно, не лучшее решение, но это сработало для меня.

[110]

}

отдельная функция для установки конфигурации.

private function set_upload_options()
{   
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'xml|pdf';
    $config['max_size'] = '10000';

    return $config;
}
FILES['userfile']['size'][$i] ) ); } for($i = 0; $i < $quantFiles ; $i++) {

Сохраните, а затем переопределите переменную $ _FILES для всего, что вам нужно. возможно, не лучшее решение, но это сработало для меня.

[110]

}

отдельная функция для установки конфигурации.

private function set_upload_options()
{   
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'xml|pdf';
    $config['max_size'] = '10000';

    return $config;
}
FILES = '';

Сохраните, а затем переопределите переменную $ _FILES для всего, что вам нужно. возможно, не лучшее решение, но это сработало для меня.

[110]

}

отдельная функция для установки конфигурации.

private function set_upload_options()
{   
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'xml|pdf';
    $config['max_size'] = '10000';

    return $config;
}
FILES = $arquivo[$i]; if ( ! $this->upload->do_upload()) { $error[$i] = array('error' => $this->upload->display_errors()); return FALSE; } else { $data[$i] = array('upload_data' => $this->upload->data()); var_dump($this->upload->data()); } } if(isset($error)) { $this->index($error); } else { $this->index($data); }

}

отдельная функция для установки конфигурации.

private function set_upload_options()
{   
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'xml|pdf';
    $config['max_size'] = '10000';

    return $config;
}
-1
ответ дан Carlos Rincones 8 March 2014 в 19:29
поделиться
        // Change [110]FILES to new vars and loop them
        foreach([110]FILES['files'] as $key=>$val)
        {
            $i = 1;
            foreach($val as $v)
            {
                $field_name = "file_".$i;
                [110]FILES[$field_name][$key] = $v;
                $i++;   
            }
        }
        // Unset the useless one ;)
        unset([110]FILES['files']);

        // Put each errors and upload data to an array
        $error = array();
        $success = array();

        // main action to upload each file
        foreach([110]FILES as $field_name => $file)
        {
            if ( ! $this->upload->do_upload($field_name))
            {
                echo ' failed ';
            }else{
                echo ' success ';
            }
        }
0
ответ дан Limitless isa 8 March 2014 в 19:29
поделиться

В codeigniter нет предопределенного метода для загрузки нескольких файлов за один раз, но вы можете отправить файл в массив и загрузить их один за другим.

. См. Здесь: Это лучший вариант для загрузки нескольких файлов в codeigniter 3.0.1 с предварительным просмотром https://codeaskbuzz.com/how-to-upload-multiple-file-in-codeigniter-framework/

0
ответ дан Pawan Singh 8 March 2014 в 19:29
поделиться
function UploadHotelImage(){
        $data = array();
        if($this->input->post('fileSubmit') && !empty([110] 

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFiles']['name'])){ $filesCount = count([110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFiles']['name']); for($i = 0; $i < $filesCount; $i++){ [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFile']['name'] = [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFiles']['name'][$i]; [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFile']['type'] = [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFiles']['type'][$i]; [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFile']['tmp_name'] = [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFiles']['tmp_name'][$i]; [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFile']['error'] = [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFiles']['error'][$i]; [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFile']['size'] = [110]

Используйте этот код для загрузки нескольких изображений в CI ....

FILES['userFiles']['size'][$i]; $uploadPath = 'uploads/files/'; $config['upload_path'] = $uploadPath; $config['allowed_types'] = 'gif|jpg|png'; $this->load->library('upload', $config); $this->upload->initialize($config); if($this->upload->do_upload('userFile')){ $fileData = $this->upload->data(); $uploadData[$i]['file_name'] = $fileData['file_name']; $uploadData[$i]['created'] = date("Y-m-d H:i:s"); $uploadData[$i]['modified'] = date("Y-m-d H:i:s"); } } if(!empty($uploadData)){ //Insert file information into the database $insert = $this->file->insert($uploadData); $statusMsg = $insert?'Files uploaded successfully.':'Some problem occurred, please try again.'; $this->session->set_flashdata('statusMsg',$statusMsg); } } //Get files data from database $data['files'] = $this->file->getRows(); //Pass the files data to view $this->load->view('upload_files/index', $data); } } //----- Model-----------// public function insertHotelImage($data = array()){ $insert = $this->db->insert_batch('tbl_hotel_images',$data); return $insert?true:false; }

Используйте этот код для загрузки нескольких изображений в CI ....

0
ответ дан Amit Shee 8 March 2014 в 19:29
поделиться

Как предложил Карлос Ринконес; не бойтесь играть с суперглобалами.

$files = 

Как предложил Карлос Ринконес; не бойтесь играть с суперглобалами.

[110]FILES; for($i=0; $i<count($files['userfile']['name']); $i++) {

Как предложил Карлос Ринконес; не бойтесь играть с суперглобалами.

[110]FILES = array(); foreach( $files['userfile'] as $k=>$v ) {

Как предложил Карлос Ринконес; не бойтесь играть с суперглобалами.

[110]FILES['userfile'][$k] = $v[$i]; } $this->upload->do_upload('userfile') }
1
ответ дан alenin 8 March 2014 в 19:29
поделиться
    public function imageupload() 
    {

      $count = count([110]FILES['userfile']['size']);

  $config['upload_path'] = './uploads/';
  $config['allowed_types'] = 'gif|jpg|png|bmp';
  $config['max_size']   = '0';
  $config['max_width']  = '0';
  $config['max_height']  = '0';

  $config['image_library'] = 'gd2';
  $config['create_thumb'] = TRUE;
  $config['maintain_ratio'] = FALSE;
  $config['width'] = 50;
  $config['height'] = 50;

  foreach([110]FILES as $key=>$value)
  { 
     for($s=0; $s<=$count-1; $s++)
     {
     [110]FILES['userfile']['name']=$value['name'][$s];
     [110]FILES['userfile']['type']    = $value['type'][$s];
     [110]FILES['userfile']['tmp_name'] = $value['tmp_name'][$s]; 
     [110]FILES['userfile']['error']       = $value['error'][$s];
     [110]FILES['userfile']['size']    = $value['size'][$s];  

         $this->load->library('upload', $config);

         if ($this->upload->do_upload('userfile'))
         {
           $data['userfile'][$i] = $this->upload->data();
       $full_path = $data['userfile']['full_path'];


           $config['source_image'] = $full_path;
           $config['new_image'] = './uploads/resiezedImage';

           $this->load->library('image_lib', $config);
           $this->image_lib->resize(); 
           $this->image_lib->clear();

         }
         else
         {
           $data['upload_errors'][$i] = $this->upload->display_errors();
         } 
     }
  }
}
0
ответ дан Khanjan Kukadiya 8 March 2014 в 19:29
поделиться

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

function __construct() {<br />
   &nbsp;&nbsp;&nbsp; parent::__construct();<br />
   &nbsp;&nbsp;&nbsp;   $this->load->library('CommonMethods');<br />
}<br />

$config = array();<br />
$config['upload_path'] = 'assets/upload/images/';<br />
$config['allowed_types'] = 'gif|jpg|png|jpeg';<br />
$config['max_width'] = 150;<br />
$config['max_height'] = 150;<br />
$config['encrypt_name'] = TRUE;<br />
$config['overwrite'] = FALSE;<br />

// upload multiplefiles<br />
$fileUploadResponse = $this->commonmethods->do_upload_multiple_files('profile_picture', $config);

/**
 * do_upload_multiple_files - Multiple Methods
 * @param type $fieldName
 * @param type $options
 * @return type
 */
public function do_upload_multiple_files($fieldName, $options) {

    $response = array();
    $files = 

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

[110]
[111]FILES; $cpt = count(

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

[110]
[111]FILES[$fieldName]['name']); for($i=0; $i<$cpt; $i++) {

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

[110]
[111]FILES[$fieldName]['name']= $files[$fieldName]['name'][$i];

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

[110]
[111]FILES[$fieldName]['type']= $files[$fieldName]['type'][$i];

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

[110]
[111]FILES[$fieldName]['tmp_name']= $files[$fieldName]['tmp_name'][$i];

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

[110]
[111]FILES[$fieldName]['error']= $files[$fieldName]['error'][$i];

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

[110]
[111]FILES[$fieldName]['size']= $files[$fieldName]['size'][$i]; $this->CI->load->library('upload'); $this->CI->upload->initialize($options); //upload the image if (!$this->CI->upload->do_upload($fieldName)) { $response['erros'][] = $this->CI->upload->display_errors(); } else { $response['result'][] = $this->CI->upload->data(); } } return $response; }
0
ответ дан Rugmangathan 8 March 2014 в 19:29
поделиться
function imageUpload(){
            if ($this->input->post('submitImg') && !empty([110] 

FILES['files']['name'])) { $filesCount = count([110]

FILES['files']['name']); $userID = $this->session->userdata('userID'); $this->load->library('upload'); $config['upload_path'] = './userdp/'; $config['allowed_types'] = 'jpg|png|jpeg'; $config['max_size'] = '9184928'; $config['max_width'] = '5000'; $config['max_height'] = '5000'; $files = [110]

FILES; $cpt = count([110]

FILES['files']['name']); for($i = 0 ; $i < $cpt ; $i++){ [110]

FILES['files']['name']= $files['files']['name'][$i]; [110]

FILES['files']['type']= $files['files']['type'][$i]; [110]

FILES['files']['tmp_name']= $files['files']['tmp_name'][$i]; [110]

FILES['files']['error']= $files['files']['error'][$i]; [110]

FILES['files']['size']= $files['files']['size'][$i]; $imageName = 'image_'.$userID.'_'.rand().'.png'; $config['file_name'] = $imageName; $this->upload->initialize($config); if($this->upload->do_upload('files')){ $fileData = $this->upload->data(); //it return $uploadData[$i]['picturePath'] = $fileData['file_name']; } } if (!empty($uploadData)) { $imgInsert = $this->insert_model->insertImg($uploadData); $statusMsg = $imgInsert?'Files uploaded successfully.':'Some problem occurred, please try again.'; $this->session->set_flashdata('statusMsg',$statusMsg); redirect('home/user_dash'); } } else{ redirect('home/user_dash'); } }

0
ответ дан Tushar Roy 8 March 2014 в 19:29
поделиться

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

if(!empty(

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES)){ $j = 1; foreach(

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES as $filekey=>$fileattachments){ foreach($fileattachments as $key=>$val){ if(is_array($val)){ $i = 1; foreach($val as $v){ $field_name = "multiple_".$filekey."_".$i;

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES[$field_name][$key] = $v; $i++; } }else{ $field_name = "single_".$filekey."_".$j;

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES[$field_name] = $fileattachments; $j++; break; } } // Unset the useless one unset(

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES[$filekey]); } foreach(

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES as $field_name => $file){ if(isset($file['error']) && $file['error']==0){ $config['upload_path'] = [upload_path]; $config['allowed_types'] = [allowed_types]; $config['max_size'] = 100; $config['max_width'] = 1024; $config['max_height'] = 768; $this->load->library('upload', $config); $this->upload->initialize($config); if ( ! $this->upload->do_upload($field_name)){ $error = array('error' => $this->upload->display_errors()); echo "Error Message : ". $error['error']; }else{ $data = $this->upload->data(); echo "Uploaded FileName : ".$data['file_name']; // Code for insert into database } } } }
0
ответ дан Ajay Patidar 8 March 2014 в 19:29
поделиться

другой бит кода здесь:

см .: https://github.com/stvnthomas/CodeIgniter-Multi-Upload

1
ответ дан ReNiSh A R 8 March 2014 в 19:29
поделиться

Вы должны использовать эту библиотеку для мультизагрузки в CI. https://github.com/stvnthomas/CodeIgniter-Multi-Upload

. Установка Просто скопируйте файл MY_Upload.php в свой каталог библиотеки приложений.

Использование: функция test_up в контроллере

public function test_up(){
if($this->input->post('submit')){
    $path = './public/test_upload/';
    $this->load->library('upload');
    $this->upload->initialize(array(
        "upload_path"=>$path,
        "allowed_types"=>"*"
    ));
    if($this->upload->do_multi_upload("myfile")){
        echo '<pre>';
        print_r($this->upload->get_multi_upload_data());
        echo '</pre>';
    }
}else{
    $this->load->view('test/upload_view');
}

}

upload_view.php в папке apps / view / test

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile[]" id="myfile" multiple>
<input type="submit" name="submit" id="submit" value="submit"/>
4
ответ дан MrBii 8 March 2014 в 19:29
поделиться
<form method="post" action="<?php echo base_url('submit'); ?>" enctype="multipart/form-data">
    <input type="file" name="userfile[]" id="userfile"  multiple="" accept="image/*">
</form>

МОДЕЛЬ: FilesUpload

class FilesUpload extends CI_Model {

    public function setFiles()
    {
        $name_array = array();
        $count = count([110] 

МОДЕЛЬ: FilesUpload

[111]

КОНТРОЛЛЕР submit

class Submit extends CI_Controller {
    function __construct()
        {
        parent::__construct();
        $this->load->helper(array('html', 'url'));
        }

        public function index()
        {
        $this->load->model('FilesUpload');

        $data = $this->FilesUpload->setFiles();

        echo '<pre>';
        print_r($data);

    }
}
FILES['userfile']['size']); foreach ([110]

МОДЕЛЬ: FilesUpload

[111]

КОНТРОЛЛЕР submit

class Submit extends CI_Controller {
    function __construct()
        {
        parent::__construct();
        $this->load->helper(array('html', 'url'));
        }

        public function index()
        {
        $this->load->model('FilesUpload');

        $data = $this->FilesUpload->setFiles();

        echo '<pre>';
        print_r($data);

    }
}
FILES as $key => $value) for ($s = 0; $s <= $count - 1; $s++) { [110]

МОДЕЛЬ: FilesUpload

[111]

КОНТРОЛЛЕР submit

class Submit extends CI_Controller {
    function __construct()
        {
        parent::__construct();
        $this->load->helper(array('html', 'url'));
        }

        public function index()
        {
        $this->load->model('FilesUpload');

        $data = $this->FilesUpload->setFiles();

        echo '<pre>';
        print_r($data);

    }
}
FILES['userfile']['name'] = $value['name'][$s]; [110]

МОДЕЛЬ: FilesUpload

[111]

КОНТРОЛЛЕР submit

class Submit extends CI_Controller {
    function __construct()
        {
        parent::__construct();
        $this->load->helper(array('html', 'url'));
        }

        public function index()
        {
        $this->load->model('FilesUpload');

        $data = $this->FilesUpload->setFiles();

        echo '<pre>';
        print_r($data);

    }
}
FILES['userfile']['type'] = $value['type'][$s]; [110]

МОДЕЛЬ: FilesUpload

[111]

КОНТРОЛЛЕР submit

class Submit extends CI_Controller {
    function __construct()
        {
        parent::__construct();
        $this->load->helper(array('html', 'url'));
        }

        public function index()
        {
        $this->load->model('FilesUpload');

        $data = $this->FilesUpload->setFiles();

        echo '<pre>';
        print_r($data);

    }
}
FILES['userfile']['tmp_name'] = $value['tmp_name'][$s]; [110]

МОДЕЛЬ: FilesUpload

[111]

КОНТРОЛЛЕР submit

class Submit extends CI_Controller {
    function __construct()
        {
        parent::__construct();
        $this->load->helper(array('html', 'url'));
        }

        public function index()
        {
        $this->load->model('FilesUpload');

        $data = $this->FilesUpload->setFiles();

        echo '<pre>';
        print_r($data);

    }
}
FILES['userfile']['error'] = $value['error'][$s]; [110]

МОДЕЛЬ: FilesUpload

[111]

КОНТРОЛЛЕР submit

class Submit extends CI_Controller {
    function __construct()
        {
        parent::__construct();
        $this->load->helper(array('html', 'url'));
        }

        public function index()
        {
        $this->load->model('FilesUpload');

        $data = $this->FilesUpload->setFiles();

        echo '<pre>';
        print_r($data);

    }
}
FILES['userfile']['size'] = $value['size'][$s]; $config['upload_path'] = 'assets/product/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '10000000'; $config['max_width'] = '51024'; $config['max_height'] = '5768'; $this->load->library('upload', $config); if (!$this->upload->do_upload()) { $data_error = array('msg' => $this->upload->display_errors()); var_dump($data_error); } else { $data = $this->upload->data(); } $name_array[] = $data['file_name']; } $names = implode(',', $name_array); return $names; } }

КОНТРОЛЛЕР submit

class Submit extends CI_Controller {
    function __construct()
        {
        parent::__construct();
        $this->load->helper(array('html', 'url'));
        }

        public function index()
        {
        $this->load->model('FilesUpload');

        $data = $this->FilesUpload->setFiles();

        echo '<pre>';
        print_r($data);

    }
}
0
ответ дан Rinnzleer 8 March 2014 в 19:29
поделиться

Попробуйте этот код.

Это работает нормально для меня

Вы должны каждый раз инициализировать библиотеку

    function do_upload()
    {
        foreach (

Попробуйте этот код.

Это работает нормально для меня

Вы должны каждый раз инициализировать библиотеку

[110]

Дальнейшее редактирование

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

CodeIgniter не поддерживает несколько файлов. Использование do_upload () в foreach не будет отличаться от его использования снаружи.

Вам нужно будет справиться с этим без помощи CodeIgniter. Вот пример https://github.com/woxxy/FoOlSlide/blob/master/application/controllers/admin/series.php#L331-370

https: / /stackoverflow.com/a/9846065/1171049

Это то, что сказано вами в комментариях:)

FILES as $index => $value) { if ($value['name'] != '') { $this->load->library('upload'); $this->upload->initialize($this->set_upload_options()); //upload the image if ( ! $this->upload->do_upload($index)) { $error['upload_error'] = $this->upload->display_errors("<span class='error'>", "</span>"); //load the view and the layout $this->load->view('pages/uploadform', $error); return FALSE; } else { $data[$key] = array('upload_data' => $this->upload->data()); $this->load->view('pages/uploadsuccess', $data[$key]); } } } } private function set_upload_options() { //upload an image options $config = array(); $config['upload_path'] = 'your upload path'; $config['allowed_types'] = 'gif|jpg|png'; return $config; }

Дальнейшее редактирование

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

CodeIgniter не поддерживает несколько файлов. Использование do_upload () в foreach не будет отличаться от его использования снаружи.

Вам нужно будет справиться с этим без помощи CodeIgniter. Вот пример https://github.com/woxxy/FoOlSlide/blob/master/application/controllers/admin/series.php#L331-370

https: / /stackoverflow.com/a/9846065/1171049

Это то, что сказано вами в комментариях:)

3
ответ дан Community 8 March 2014 в 19:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: