У меня проблема с использованием dropzone в codeigniter.Я комбинирую обычную форму с Dropzone для загрузки нескольких изображений одновременно (максимум 3 изображения).Проблема в том, что данные хранятся несколько раз.Я просто хочу сохранить данные один раз и использовать insert_id
для хранения данных изображений в другой таблице.Для уточнения вот мой код:
HTML
<?php echo form_open_multipart('', 'role="form" class="dropzone" id="imageDropzone"'); ?>
<div class="col-sm-6">
<div class="form-group">
<label>Title</label>
<?php echo form_input('title', set_value('title'), 'class="form-control"'); ?>
</div>
<div class="form-group">
<label>Desc</label>
<?php echo form_input('desc', set_value('desc'), 'class="form-control"'); ?>
</div>
</div>
<div class="col-sm-6">
<div class="dropzone-previews infile dz-clickable">
<div class="dz-message">
<h5><i class="ion ion-md-camera"></i> Click here to add images</h5>
</div>
</div>
</div>
<div class="col-sm-12">
<div class="gradient-buttons">
<button type="submit" class="btn btn-info btn-block btn-lg" id="startUpload">Submit</button>
</div>
</div>
<?php echo form_close(); ?>
JS (Dropzone)
<script>
Dropzone.autoDiscover = false;
var photoDropzone = new Dropzone("#imageDropzone", {
maxFiles: 3,
parallelUploads: 100,
// uploadMultiple: true, // I disable this, cause imgaes would not be uploaded
autoProcessQueue: false,
method: "POST",
previewsContainer: '.dropzone-previews',
clickable: '.dropzone-previews',
addRemoveLinks: true,
acceptedFiles: 'image/*',
init: function() {
var myDropzone = this;
this.element.querySelector("#startUpload").addEventListener("click", function(e) {
// Make sure that the form isn't actually being sent.
e.preventDefault();
e.stopPropagation();
myDropzone.processQueue();
});
}
});
</script>
Codeigniter
public function process_data()
{
if($this->form_validation->run('validate-data') == TRUE)
{
$data_array = [
'user_id' => $this->session->ID,
'title' => $this->input->post('title'),
'desc' => $this->input->post('desc')
];
// this is my problem, it will insert multiple times
// based on how many images is submitting
$IDdata = $this->Data_model->save($data_array);
if($IDdata)
{
$path = realpath(APPPATH.'../_libs/_files/_img');
$config = [
'allowed_types' => 'jpg|jpeg|png',
'upload_path' => $path.'/_full',
'file_name' => strtotime(date('Y-m-d')),
'file_ext_tolower' => TRUE,
'remove_spaces' => TRUE,
'detect_mime' => TRUE,
'mod_mime_fix' => TRUE
];
// Processing image upload...
$this->load->library(['upload', 'image_lib']);
$this->upload->initialize($config);
// Images can be uploaded and thumbnail are created properly.
if($this->upload->do_upload('file'))
{
$this->load->model(['Imagedata_model']);
$file_image = $this->upload->file_name;
$crop_thumb = [
'source_image' => $path.'/_full/'.$file_image
'new_image' => $path.'/_thumb/small_'.$file_image,
'width' => 80,
'maintain_ratio' => TRUE,
];
$this->image_lib->initialize($crop_thumb);
$this->image_lib->resize();
$data_image = ['data_id' => $IDdata, 'image_data' => $file_image];
$this->Imagedata_model->save($data_image);
redirect(uri_string(), 'location');
}
}
}
$this->load->view('_admin/_form', $this->data);
}
Если кто-нибудь здесь может мне помочь, это будет оценено.Спасибо.