使用dropzone js不会在codeigniter中上载多个文件

时间:2016-09-06 13:20:39

标签: javascript php jquery codeigniter

我使用dropzone js上传多张图片。

我的代码如下所示。

var s_currency = $('select[name="currency"]');
Dropzone.autoDiscover = false;
   if($('#dropzoneDragArea').length > 0){
    var expenseDropzone = new Dropzone("#expense-form", {
     autoProcessQueue: false,
     clickable: '#dropzoneDragArea',
     acceptedFiles:allowed_files,
     previewsContainer: '.dropzone-previews',
     addRemoveLinks: true,
     //maxFiles: 1,
     //parallelUploads: 1,
     uploadMultiple: true,
     dictDefaultMessage:drop_files_here_to_upload,
     dictFallbackMessage:browser_not_support_drag_and_drop,
     dictRemoveFile:remove_file,
     dictMaxFilesExceeded:you_can_not_upload_any_more_files,
     error:function(file,response){
      alert_float('danger',response);
   },
   success:function(file,response){
      response = $.parseJSON(response);
      this.options.autoProcessQueue = true;
      if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) {
        window.location.assign(response.url);
    }
   },
   });
   }

   $(document).ready(function(){

   _validate_form($('form'),{category:'required',date:'required',amount:'required',currency:'required'},expenseSubmitHandler);
    $('input[name="billable"]').on('change',function(){
      do_billable_checkbox();
   });
});

function expenseSubmitHandler(form){
   s_currency.removeAttr('disabled');
   $('input[name="billable"]').prop('disabled',false);
   $.post(form.action, $(form).serialize()).success(function(response) {
     response = $.parseJSON(response);
     if (response.expenseid) {
      if(typeof(expenseDropzone) !== 'undefined'){
        //console.log(expenseDropzone.getQueuedFiles().length);return;
         if (expenseDropzone.getQueuedFiles().length > 0) {
             expenseDropzone.options.url = admin_url + 'expenses/add_expense_attachment/' + response.expenseid;
             expenseDropzone.processQueue();
         } else {
           window.location.assign(response.url);
       }
   } else {
       window.location.assign(response.url);
   }
   } else {
       window.location.assign(response.url);
   }
   });
   return false;
   }
<form action="http://127.0.0.1/perfex_crm_aug_25/admin/expenses/expense" id="expense-form" class="dropzone dropzone-manual" enctype="multipart/form-data" method="post" accept-charset="utf-8" novalidate="novalidate">
  
  <div id="dropzoneDragArea" class="dz-default dz-message">
    <span>Attach file here</span>
  </div>
  <div class="dropzone-previews"></div>
  
  <button type="submit" class="btn btn-info pull-right mtop15">Submit</button>
           
</form>

我的控制器看起来像这样:

public function expense($id = '')
{
    if (!has_permission('expenses', '', 'view')) {
        access_denied('expenses');
    }
    if ($this->input->post()) {

        if ($id == '') {
            if (!has_permission('expenses', '', 'create')) {
                set_alert('danger', _l('access_denied'));
                echo json_encode(array(
                    'url' => admin_url('expenses/expense')
                ));
                die;
            }
            $id = $this->expenses_model->add($this->input->post());
            if ($id) {
                set_alert('success', _l('added_successfuly', _l('expense')));
                echo json_encode(array(
                    'url' => admin_url('expenses/list_expenses/' . $id),
                    'expenseid' => $id
                ));
                die;
            }
            echo json_encode(array(
                'url' => admin_url('expenses/expense')
            ));
            die;
        } else {
            if (!has_permission('expenses', '', 'edit')) {
                set_alert('danger', _l('access_denied'));
                echo json_encode(array(
                    'url' => admin_url('expenses/expense/' . $id)
                ));
                die;
            }
            $success = $this->expenses_model->update($this->input->post(), $id);
            if ($success) {
                set_alert('success', _l('updated_successfuly', _l('expense')));
            }
            echo json_encode(array(
                'url' => admin_url('expenses/list_expenses/' . $id),
                'expenseid' => $id
            ));
            die;
        }
    }
    if ($id == '') {
        $title = _l('add_new', _l('expense_lowercase'));
    } else {
        $data['expense'] = $this->expenses_model->get($id);
        $title           = _l('edit', _l('expense_lowercase'));
        //echo "<pre>";
        //print_r($data['expense']);
    }


    if($this->input->get('customer_id')){
        $data['customer_id'] = $this->input->get('customer_id');
        $data['do_not_auto_toggle'] = true;
    }

    $this->load->model('taxes_model');
    $this->load->model('payment_modes_model');
    $this->load->model('currencies_model');
    $this->load->model('projects_model');
    $data['customers']      = $this->clients_model->get();
    $data['taxes']          = $this->taxes_model->get();
    $data['categories']     = $this->expenses_model->get_category();
    $data['supplier']       = $this->expenses_model->get_supplier();
    //print_r($data['supplier']);
    $data['payment_modes']  = $this->payment_modes_model->get();
    $data['currencies']     = $this->currencies_model->get();
    $data['title']          = $title;
    $this->load->view('admin/expenses/expense', $data);
}

我还创建了上传图片的助手。该功能如下所示:

  function handle_lead_attachments($leadid)
  {

if(isset($_FILES['file']) && _perfex_upload_error($_FILES['file']['error'])){
    header('HTTP/1.0 400 Bad error');
    echo _perfex_upload_error($_FILES['file']['error']);
    die;
}

$CI =& get_instance();
if (isset($_FILES['file']['name']) && $_FILES['file']['name'] != '') {
    do_action('before_upload_lead_attachment',$leadid);
    $path        = LEAD_ATTACHMENTS_FOLDER . $leadid . '/';
    // Get the temp file path
    $tmpFilePath = $_FILES['file']['tmp_name'];
    // Make sure we have a filepath
    if (!empty($tmpFilePath) && $tmpFilePath != '') {
        // Setup our new file path
        if (!file_exists($path)) {
            mkdir($path);
            fopen($path . 'index.html', 'w');
        }
         $filename    = unique_filename($path, $_FILES["file"]["name"]);
         $newFilePath = $path . $filename;
        // Upload the file into the company uploads dir
        if (move_uploaded_file($tmpFilePath, $newFilePath)) {
            $CI =& get_instance();
            $CI->db->insert('tblleadattachments', array(
                'leadid' => $leadid,
                'file_name' => $filename,
                'filetype' => $_FILES["file"]["type"],
                'addedfrom' => get_staff_user_id(),
                'dateadded' => date('Y-m-d H:i:s')
            ));
            $CI->load->model('leads_model');
            $CI->leads_model->log_lead_activity($leadid, 'not_lead_activity_added_attachment');
            return true;
        }
    }
}
return false;
}

这里,当我上传一张图片而不是工作正常时。但是当我尝试上传多张图片时,存储其他数据的图片列已经传递了空值。

那么我应该在我的代码中更改以上传多个图像。我使用过perfex-crm项目。我必须修改其经验模块。

0 个答案:

没有答案