如果没有选择要在codeigniter中上传的图像,请设置默认图像

时间:2011-09-22 18:32:58

标签: php codeigniter

我正在编写一个脚本,用于上传图像并将图像路径保存在数据库中。我唯一的问题是如果用户没有上传我想设置默认图像的图像。

但是在codeigniter中,当没有选择图像时,它会自动给出一个错误,指出没有选择输入文件。

我的控制器

  if ( !$this->upload->do_upload('image'))
     {
    $error = array('error' => $this->upload->display_errors());
    $this->load->view('upload_success', $error);

     }
    else {
        $image_data=array('image_info' => $this->upload->data('image')); 
        $image_path=$image_data['image_info']['full_path'];

        $data =array(
        'submitedby'=>$username,
        'city'=>$this->input->post('towncity'),
        'image' => $image_path

);  
   }

如果用户未选择图片而未显示默认错误,有人可以建议我如何设置默认图片吗?

2 个答案:

答案 0 :(得分:3)

do_upload()失败的子句中,检查文件是否已上传。

if (!$this->upload->do_upload('image')) {

    if (!empty($_FILES['image']['name'])) {
        // Name isn't empty so a file must have been selected
        $error = array('error' => $this->upload->display_errors());
        $this->load->view('upload_success', $error);
    } else {
        // No file selected - set default image
        $data = array(
            'submitedby' => $username,
            'city'       => $this->input->post('towncity'),
            'image'      => 'path/to/default/image',
        );
    }

} else {
    $image_data = array('image_info' => $this->upload->data('image'));
    $image_path = $image_data['image_info']['full_path'];

    $data = array(
        'submitedby' => $username,
        'city'       => $this->input->post('towncity'),
        'image'      => $image_path,
    );
}

这可以进一步重构,但重点是你可以检查$_FILES['field_name']['name']以查看是否选择了文件。

答案 1 :(得分:1)

您可能无法生成所需的图像字段,然后如果找不到图像,您可以在视图中设置默认图像。这样您就不会上传所有类型的重复图像,并且您可以随时随地更新默认图像。