我尝试使用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”:“您没有选择要上传的文件。”}
任何想法?我的会议错了吗?
答案 0 :(得分:0)
form_open()更改为form_open_multipart()