Codeigniter上传文件不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeigniter上传文件不起作用相关的知识,希望对你有一定的参考价值。
function submit_article() {
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<p style="color:red">', '<br/></p>');
$my_rules = array(
array(
'field' => 'title',
'label' => 'Title',
'rules' => 'required|min_length[5]|max_length[20]|xss_clean'
),
array(
'field' => 'additionalUpload',
'label' => 'Additional Upload',
'rules' => 'callback_is_image'
)
);
$this->form_validation->set_rules($my_rules);
if ($this->form_validation->run() == FALSE) {
//ERROR
$data['title'] = ucfirst('submit Article');
$this->load->view('templates/header', $data);
$this->load->view('submit_article', $data);
$this->load->view('templates/footer', $data);
} else {
//SUCCESS
$data['title'] = ucfirst('article Submitted');
$this->load->view('templates/header', $data);
$this->load->view('forms_view/submit_article_success', $data);
$this->load->view('templates/footer', $data);
}
}
function is_image($value) {
$config['upload_path'] = './public/uploads/';
$config['allowed_types'] = 'gif|jpg|png|pdf|tiff';
$config['max_size'] = '2048';
$config['max_width'] = '0';
$config['max_height'] = '0';
$config['remove_spaces'] = true;
$this->load->library('upload', $config);
if (!$this->upload->do_upload()) {
$this->form_validation->set_message('is_image', $this->upload->display_errors('<p style="color:red">', '<br/></p>'));
return FALSE;
} else {
$this->upload->data();
return TRUE;
}
}
大家好,这是我的控制器功能代码,用于处理codeigniter中的多部分表单数据,实际上字段additionalUpload不是必需的字段,但是如果用户在文件类型的additionalUpload字段中上传文件,我想要验证它上面的代码并单击提交按钮而不选择任何文件,它显示错误“您没有选择要上传的文件”。这是我不想要的,因为这不是必填字段,这是我的第一个问题..
第二个是当我选择一个文件并点击提交按钮时,它再次显示“你没有选择要上传的文件。”。
注意:我刚刚在这里显示了我的表单的两个字段,即title,additionalUpload但我总共有9个字段。
提前感谢请帮助任何人。
答案
首先要记住文件字段的名称。
<input type="file" name="image"/>
$this->upload->do_upload('image');
其次,你不能有max_width和max height 0
$config['max_width'] = '2048';
$config['max_height'] = '2048';
首先尝试,然后看看
对于验证字段文件:
if($_FILES['you_field_name']['tmp_name']){
//your code
}
一声问候
另一答案
尝试一下检查$_FILES
是否为空,然后进行验证,否则什么都不做
$my_rules = array(
array(
'field' => 'title',
'label' => 'Title',
'rules' => 'required|min_length[5]|max_length[20]|xss_clean'
)
);
if(!empty($_FILES)){
$my_rules[]= array(
'field' => 'additionalUpload',
'label' => 'Additional Upload',
'rules' => 'callback_is_image'
)
}
$this->form_validation->set_rules($my_rules);
在上传功能中,您需要指定字段名称
$this->upload->do_upload('your_field_name')
以上是关于Codeigniter上传文件不起作用的主要内容,如果未能解决你的问题,请参考以下文章
“上传路径似乎无效”。 Codeigniter文件上传不起作用[关闭]