Я создаю программу, в которой я хочу загрузить один файл, чтобы выбрать несколько изображений и сохранить их в базе данных. Я не настолько гениален в программировании, но я понимаю программирование.
Вот что я сделал до сих пор,
Контроллер / 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'); ?>
Моя программа работает хорошо. Я могу загружать изображения по одному, но я хочу, чтобы загрузить несколько изображений в один клик. Мне это нужно, потому что есть много документов, которые мы должны загрузить на наших веб-сайтах.
Надеюсь получить помощь от вас, ребята.
что вам нужно сделать, это изменить имя тега файла на массив, как
<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());
.
.
.
}
}
Приветствия.
Вы можете использовать эту библиотеку … кажется быстрее, чем другая альтернатива.
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