Как я могу загрузить несколько изображений при загрузке одного файла с помощью Codeigniter?

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

Вот что я сделал до сих пор,

Контроллер / upload.php

<?php

class Upload extends CI_Controller {

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

public function index() {
$this->load->view('v_page/header_view');
$this->load->view('v_document/upload_view', array('error' => ' ' ));
$this->load->view('v_page/footer_view');
}

public function do_upload() {
//print_r($_FILES);
$config = array(
'upload_path'   => './public/img/uploads',
'upload_url'    => base_url().'public/img/uploads',
'allowed_types' => 'gif|jpg|png|jpeg',
//'overwrite'     => TRUE,
'max_size'      => '1000KB',
'max_width'     => '1024',
'max_height'    => '768',
//'encrypt_name'  => true,
);

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

if (!$this->upload->do_upload()) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('v_page/header_view');
$this->load->view('v_document/upload_error', $error);
$this->load->view('v_document/upload_view');
$this->load->view('v_page/footer_view');
}
else {
$upload_data = $this->upload->data();
$file_array = array(
'image_name'    => $upload_data['file_name'],
//'description'   => "",
'date_created'  => date('Y-m-d H:i:s', now()),
'date_modified' => date('Y-m-d H:i:s', now()),
'size'          => $upload_data['file_size'],
'type'          => $upload_data['image_type'],
'width'         => $upload_data['image_width'],
'height'        => $upload_data['image_height'],
'actions'       => "modify",
);
$this->load->database();
$this->db->insert('tbl_image', $file_array);
$data = array('upload_data' => $this->upload->data());
$this->load->view('v_document/upload_success', $data);
}
}

public function upload_success() {
redirect('do_upload', 'refresh');
}

просмотров / v_document / upload_view.php

<p class="alert alert-info">Upload New Document</p>
<?php echo form_open_multipart('upload/do_upload');?>
<label for="file">Select File To Upload:</label>
<input type="file" name="userfile" multiple="multiple" class="btn btn-file"/>
</br></br>
<input type="submit" value="Upload File" class="btn btn-primary"/>
<?php echo form_close(); ?>

просмотров / v_document / upload_error.php

<div class="alert alert-error"><?php echo $error; ?></div>

просмотров / v_document / upload_success.php

<?php $this->load->view('v_page/header_view'); ?>

<div class="alert alert-success">Your file was successfully uploaded!</div>
<ul>
<?php foreach ($upload_data as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
</ul>
<p>
<?php echo anchor(base_url().'public/img/uploads/' . $upload_data['file_name'], 'View uploaded image') ?>
</br>
<?php echo anchor('upload', 'Upload another image'); ?>
</p>

<?php $this->load->view('v_page/footer_view'); ?>

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

Надеюсь получить помощь от вас, ребята.

2

Решение

что вам нужно сделать, это изменить имя тега файла на массив, как

<input type="file" name="userfile[]" multiple="multiple" class="btn btn-file"/>

а затем вам нужно поместить код загрузки в foreach, как показано ниже

 foreach($_FILES['userfile'] as $file)
{
if (!$this->upload->do_upload($file)) {
$error = array('error' => $this->upload->display_errors());
.
.
.

}
}

Приветствия.

1

Другие решения

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

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

после добавления, что вам нужно сделать, это

Изменение в контроллере:

//upload multiple file

if($this->upload->do_multi_upload("files"){
//Code to run upon successful upload.
}

//get data of uploaded files

print_r($this->upload->get_multi_upload_data());

Я надеюсь, что вы используете codeigniter 2.x

1

По вопросам рекламы [email protected]