ajax无法读取$ _FILES [' filename'] codeigniter HMVC

时间:2016-07-18 07:34:41

标签: php jquery ajax codeigniter

嗨我上传了带验证的文件。它完全正常,直到我把ajax放在表单验证上,它现在无法读取$_FILES['filename']变量..

它伴随着错误

ERROR - 2016-07-18 09:19:52 --> Severity: Notice --> Undefined index: userfile

我有这个表格

echo form_open_multipart('PDFuploads/upload_pdf/'.$this->uri->segment(3) ,array('id' => 'form-user'));

和我的ajax是,

  $('#form-user').submit(function(e) {
    e.preventDefault();

    var me = $(this);

    // perform ajax
    $.ajax({
      url: me.attr('action'),
      type: 'post',
      data: me.serialize(),
      dataType: 'json',
      success: function(response) {
        if (response.success == true) {
          // if success we would show message
          // and also remove the error class
          $('#the-message').append('<div class="alert alert-success">' +
            '<span class="glyphicon glyphicon-ok"></span>' +
            ' Data has been saved' +
            '</div>');
          $('.form-group').removeClass('has-error')
                  .removeClass('has-success');
          $('.text-danger').remove();

          // reset the form
          me[0].reset();

          // close the message after seconds
          $('.alert-success').delay(500).show(10, function() {
            $(this).delay(3000).hide(10, function() {
              $(this).remove();
            });
          })
        }
        else {
          $.each(response.messages, function(key, value) {
            var element = $('#' + key);

            element.closest('div.form-group')
            .removeClass('has-error')
            .addClass(value.length > 0 ? 'has-error' : '')
            .find('.text-danger')
            .remove();

            element.after(value);
          });
        }
      }
    });
  });

我的控制器是

  public function upload_pdf(){

    $data = array('success' => false, 'messages' => array());

    $this->form_validation->set_rules('DOC_NAME',  'Document Name'    ,'trim|required');
    $this->form_validation->set_rules('DOC_TYPE',  'Document Type'    ,'trim|required');
    $this->form_validation->set_rules('DOC_DATE',  'Date'             ,'trim|required');

    $this->form_validation->set_rules('userfile', 'Document', 'callback_pdf_upload');

    if($this->form_validation->run($this) == TRUE){

      $this->form_validation->set_rules('userfile', 'Document', 'callback_pdf_upload2');

      $data['success'] = true;

      if($this->form_validation->run($this) == TRUE){

        $file_data = $this->upload->data();
        $url = base_url().'uploads/pdf/'.$file_data['file_name'];
        $this->PDFuploads_Model->insert($url);
        $data['success'] = true;

      }else{

        foreach ($_POST as $key => $value) {
          # code...
          $data['messages'][$key] = form_error($key);
        }


      }//second validation


      $data['success'] = true;

    }else{

      foreach ($_POST as $key => $value) {
        # code...
        $data['messages'][$key] = form_error($key);
      }


      //$this->add_view();
    }// first
    echo json_encode($data);
  }// end function


  public function pdf_upload(){


    if($_FILES['userfile']['size'] != 0){

      return true;

    }else{

      $this->form_validation->set_message('pdf_upload', "<p class='text-danger'><i class='  fa fa-times-circle-o' ></i> No file selected</p>");
      return false;
    }// end if else
  }


  public function pdf_upload2(){

    $config['upload_path'] = './uploads/pdf';
    $config['allowed_types'] = 'pdf';
    //$config['file_name']     = 'userimage_'.substr(md5(rand()),0,7);
    //$config['overwrite']     = false;
    $config['max_size']  = '5120';

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

    if(!$this->upload->do_upload('userfile')){

      $this->form_validation->set_message('pdf_upload2', $this->upload->display_errors('<p class="text-danger"><i class="fa fa-times-circle-o"></i> ', '</p>'));
      return false;

    }else{

      $this->upload->data('userfile');
      return true;

    }//end if else

  }

我该如何解决这个错误?

0 个答案:

没有答案