CodeIgniter文件上传 - Fat模型皮肤控制器

时间:2014-12-19 12:46:55

标签: php codeigniter file-upload

我想问一个问题。

我的模型中有一个包含文件上传和图像处理的方法。代码工作正常,但唯一的问题是我无法弄清楚如何在控制器中恢复上传错误,以便将其传递给视图并将其显示给用户。

这是我模型中的代码:

class Foo_Model extends CI_Model
{

    public function do_upload(){
        $id = intval($this->input->post('id'));
        $config = array(
            'upload_path' => './uploads/files/',
            'allowed_types' =>  'gif|jpg|png',
            'max_size'      =>  '2048',
            'max_width'     =>  '800',
            'max_heigth'    =>  '300',
            'overwrite'     =>  true,
            'file_name'     =>  'file_'.$id, // e.g. file_10.jpg
        );
        $this->load->library('upload', $config);

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

            return $this->upload->display_errors();
        } else {
            // file uploaded successfully
            // now lets create some thumbs
            $upload_file = $this->upload->data();
            if ($upload_file['is_image']) {
                $config['image_library'] = 'gd2';
                $config['source_image'] = $upload_file['file_name'];
                $config['create_thumb'] = TRUE;
                $config['maintain_ratio'] = TRUE;
                $config['width'] = 75;
                $config['height'] = 50;

                $this->load->library('image_lib', $config);

                $this->image_lib->resize();
            }

            // uploading and resizing was done
            return $upload_file;
            // return true;
        }
    }
}

我的控制器中的代码

public function upload(){

    $this->foo_model->do_upload();
    // need to get the upload error (if any occured) or the upload data
    // how can I get them back from function of the model?

    $this->load->view('form_upload', $data);
}

1 个答案:

答案 0 :(得分:0)

return方法出现Model个错误,因此请保留变量中的返回数据并检查errorfile_data

public function upload(){

    $upload_data = $this->foo_model->do_upload();
    //upload data will be return in array format
    if(is_array($upload_data)){
      $data['upload_file_info'] = $upload_data
    }else{ /*error as string so if not array then always error*/
      $data['error']  = $upload_data;
    }

    $this->load->view('form_upload', $data);
}