codeigniter文件上传 - 可选?

时间:2010-07-19 15:00:32

标签: file codeigniter upload

我确信这很简单,但我看不到如何上传CI可选的文件。

如果您将文件输入框留空,则会显示错误“您没有选择上传文件”。

我希望它是可选的原因是我的表单编辑了目录类型列表,每次编辑列表时我都不需要上传图像。

有没有办法删除文件类

上的“必需”错误处理

4 个答案:

答案 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')
                );
        }