表格中的文件和公共数据

时间:2013-12-14 05:22:48

标签: ajax codeigniter validation file-upload

我尝试使用Codeigniter和Ajax从表单上传图像。我创建了下一个表单结构:

<?php
$config = array('class' => "small-12 columns no-left-margins",'id'=>"form_$i", 'enctype'=>"multipart/form-data");
echo form_open_multipart('', $config); 
?>
<!-- file, text, and text area inputs -->
<?php 
echo form_close(); 
?>
<a href="#" class="button tiny right" id="submit" value="upload">Guardar</a>

Ajax请求是:

$("form").submit(function(e){
    e.preventDefault();
   var datos = $(this).serializeArray();
   $.ajax({
      url: 'guardarNuevoProducto',
      type: 'POST',
      data: datos
   });

});

控制器动作代码为:

// uploadPicture_rules is the index of the $config array that contains the picture   //validation rules
$picRules = $this->config->item('uploadPicture_rules');

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

if(!$this->upload->do_upload()){
   echo json_encode(array('st'=>0, 'msg' => $this->upload->display_errors()));
}else{
   echo json_encode(array('st'=>0, 'msg' => 'Successfully Submiited'));
}

并拥有下一个文件上传验证规则:

$config['uploadPicture_rules'] = Array(
   'allowed_types' => 'gif|jpg|png', 
   'max_size' =>'100',
   'upload_path' => '/assets'
);

正确检查所有表单值,但file_uploader表示:

  

{“st”:0,“msg”:“您没有选择要上传的文件。”}

任何想法?我的会议错了吗?

1 个答案:

答案 0 :(得分:0)

form_open()更改为form_open_multipart()