我确信这很简单,但我看不到如何上传CI可选的文件。
如果您将文件输入框留空,则会显示错误“您没有选择上传文件”。
我希望它是可选的原因是我的表单编辑了目录类型列表,每次编辑列表时我都不需要上传图像。
有没有办法删除文件类
上的“必需”错误处理答案 0 :(得分:13)
使用以下内容:
<?php if ( $_FILES AND $_FILES['field_name']['name'] )
{
// Upload the file
}
答案 1 :(得分:3)
codeigniter文件上传可选......工作完美..... :)。
----------控制器---------
function file()
{
$this->load->view('includes/template', $data);
}
function valid_file()
{
$this->form_validation->set_rules('userfile', 'File', 'trim|xss_clean');
if ($this->form_validation->run()==FALSE)
{
$this->file();
}
else
{
$config['upload_path'] = './documents/';
$config['allowed_types'] = 'gif|jpg|png|docx|doc|txt|rtf';
$config['max_size'] = '1000';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
if ( !$this->upload->do_upload('userfile',FALSE))
{
$this->form_validation->set_message('checkdoc', $data['error'] = $this->upload->display_errors());
if($_FILES['userfile']['error'] != 4)
{
return false;
}
}
else
{
return true;
}
}
我只是使用这行,这使它可选,
if($_FILES['userfile']['error'] != 4)
{
return false;
}
$_FILES['userfile']['error'] != 4 is for file required to upload.
你可以使用$_FILES['userfile']['error'] != 4
使其成为不必要的,然后它将传递所需文件的错误
通过使用 return false ,可以很好地处理其他类型的错误,
希望它对你有用....
答案 2 :(得分:0)
在调用do_upload()
之前,在控制器中使用此代码if (is_uploaded_file($_FILES['field_name']['tmp_name'])) {
// your code here
}
答案 3 :(得分:0)
使用此代码:-
$config['upload_path'] = 'assets/img/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->load->library('upload', $config);
// Upload the file
if ($this->upload->do_upload('Image')){
$dataimage = $this->upload->data();
$data = array(
'image' => $dataimage['file_name'],
'UserName' => $this->input->post('UserName'),
'Password' => $this->input->post('Password'),
'xid' => $this->input->post('xid')
);
}
else{
/*$out['msg'] = show_err_msg($this->upload->display_errors());
echo json_encode($out);
exit();*/
$data = array(
'image' => NULL,
'UserName' => $this->input->post('UserName'),
'Password' => $this->input->post('Password'),
'xid' => $this->input->post('xid')
);
}