上传图片在codeigniter中出错

时间:2016-02-06 10:40:25

标签: codeigniter

我想尝试做的是我试图将图像上传到数据库,但我不知道为什么我会遇到像

这样的错误的原因
 Message: Undefined index: userfile
 Message: Undefined variable: images

在我的视图中。正如您可以看到输入文件的名称设置为与其他教程相同的数组

  <!-- Bootstrap modal -->
    <div class="modal fade" id="modal_form" role="dialog">
   <div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h3 class="modal-title">Person Form</h3>
        </div>
        <div class="modal-body form">
            <form action="#" id="form" class="form-horizontal">
                <input type="hidden" value="" name="id"/> 
                <div class="form-body">
                    <div class="form-group">
                        <label class="control-label col-md-3">First Name</label>
                        <div class="col-md-9">
                            <input name="firstName" placeholder="First Name" class="form-control" type="text">
                            <span class="help-block"></span>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="control-label col-md-3">Image</label>
                        <div class="col-md-9">
                        <input type="file" name="userfile[]" id="file" class="form-control">
                            <span class="help-block"></span>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="control-label col-md-3">Gender</label>
                        <div class="col-md-9">
                            <select name="gender" class="form-control">
                                <option value="">--Select Gender--</option>
                                <option value="male">Male</option>
                                <option value="female">Female</option>
                            </select>
                            <span class="help-block"></span>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="control-label col-md-3">Address</label>
                        <div class="col-md-9">
                            <textarea name="address" placeholder="Address" class="form-control"></textarea>
                            <span class="help-block"></span>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="control-label col-md-3">Date of Birth</label>
                        <div class="col-md-9">
                            <input name="dob" placeholder="yyyy-mm-dd" class="form-control datepicker" type="text">
                            <span class="help-block"></span>
                        </div>
                    </div>
                </div>
            </form>
        </div>
        <div class="modal-footer">
            <button type="button" id="btnSave" onclick="save()" class="btn btn-primary">Save</button>
            <button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
        </div>
    </div><!-- /.modal-content -->
   </div><!-- /.modal-dialog -->
 </div><!-- /.modal -->
 <!-- End Bootstrap modal  

在我的控制器中。

 public function image()
   {
   $files = $_FILES;
           $cpt = count($_FILES['userfile']['name']); //this is line that has an error, the Message: Undefined index: userfile
             for($i=0; $i<$cpt; $i++)
            {
            $_FILES['userfile']['name']= $files['userfile']['name'][$i];
            $_FILES['userfile']['type']= $files['userfile']['type'][$i];
            $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
             $_FILES['userfile']['error']= $files['userfile']['error'][$i];
             $_FILES['userfile']['size']= $files['userfile']['size'][$i];
            $this->upload->initialize($this->set_upload_options());
            $this->upload->do_upload();
            $fileName = $_FILES['userfile']['name'];
             $images[] = $fileName;
   }
   $fileName = implode(',',$images); // the line that has an error, Message: Undefined variable: images
   return $fileName;
   }
   public function ajax_add()
  {

    $this->_validate();
    $data = array(
            'firstName' => $this->input->post('firstName'),
            //'lastName' => $this->input->post('lastName'),
            'gender' => $this->input->post('gender'),
            'address' => $this->input->post('address'),
            'dob' => $this->input->post('dob'),
            'image' => $this->input->post($this->image()),
        );
    $insert = $this->person->save($data);
    echo json_encode(array("status" => TRUE));
   }


 private function set_upload_options()
   { 
     // upload an image options
     $config = array();
     $config['upload_path'] = './upload/'; //give the path to upload the image in folder
     $config['allowed_types'] = 'gif|jpg|png';
      $config['max_size'] = '0';
     $config['overwrite'] = FALSE;
   return $config;
   }
    public function ajax_update()
   {
    $this->_validate();
    $data = array(
            'firstName' => $this->input->post('firstName'),
        //  'lastName' => $this->input->post('lastName'),
            'gender' => $this->input->post('gender'),
            'address' => $this->input->post('address'),
            'dob' => $this->input->post('dob'),
        );
    $this->person->update(array('id' => $this->input->post('id')), $data);
    echo json_encode(array("status" => TRUE));
   }

我想将该图像名称插入到我的数据库中,但这些错误会阻止我这样做......需要帮助。

1 个答案:

答案 0 :(得分:2)

在您的Ajax请求中请添加

   $("#form").submit(function(e){
    e.preventDefault();
    var fd = new FormData();
        $.ajax({
         xhr: function() {
                    var xhrobj = $.ajaxSettings.xhr();
                    return xhrobj;
                },
     data: formData,
    So on....
//ajax close
});

并且忘了使用

enctype="multipart/form-data"

在表格标签上......你会没事的

对于未定义变量:图像

请放

    $images = array();// just before for loop.
 $cpt = count($_FILES['userfile']);