Dropzone вызывает многократную вставку данных в codeigniter - PullRequest
0 голосов
/ 08 февраля 2019

У меня проблема с использованием 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);
}

Если кто-нибудь здесь может мне помочь, это будет оценено.Спасибо.

...