更新Codeigniter中的图片/图像

时间:2015-04-01 15:06:48

标签: php codeigniter file-upload upload

我正在尝试为想要更改照片的用户创建更新图片。当我点击提交照片上传时,没有上传的照片,照片的列仍然没有更新。

这是我的Contorller:

function foto($id='')
    {
        $data['data']        = $this->user_model->get_foto($id);
        $data['form_action'] = site_url("user/update_foto/$id");
        $this->load->view('user/foto_form', $data);
    }

    function update_foto($id=''){
        $this->user_model->update_foto($id);
    }

这是我的模特:

function get_foto($id=0){
        $id    = $this->session->userdata('id');
        $sql   = "SELECT id,foto FROM user WHERE id= '$id'";
        $query = $this->db->query($sql);
        $data  = $query->row_array();
        return $data;
    }

    function update_foto(){
        $config['upload_path'] = './upload/';
        $config['allowed_types'] = 'jpg|png|jpeg';
        $this->load->library('upload', $config);
        if (!$this->upload->do_upload('foto'))
        {
            $id_user=$this->session->userdata('id');
            redirect ("user/foto/$id_user");
        }   else {
            $id_user=$this->session->userdata('id');
            $data=array(
            'foto'=>$this->input->post('foto')
            );
            $this->db->where('id',$id_user);
            $this->db->update('user',$data);
            redirect("user");
        }
    }

这是我在视图上的上传表单:

    <form role="form" action="<?php echo $form_action ?>" class="form-horizontal style-form" method="POST" enctype="multipart/form-data">
    <label >Upload Foto</label>
    <input type="file" name="foto"/>
  <button type="submit">Save</button>
   </form>

任何答案?非常感谢答案...

3 个答案:

答案 0 :(得分:0)

在您的控制器上尝试替换此

来自

site_url("user/update_foto/$id");

site_url("user/update_foto") ./. $id;

或者您可以使用uri细分参考用户指南。

site_url("user/update_foto") ./. $this->uri->segment(4); // unsure id check uri segment in url.

您的路线可能需要更改

$route['user/update_foto/(:any)'] = "controllername/foto/$1";

所有方法都确保控制器具有索引()

答案 1 :(得分:0)

在您的模型中,这是错误的。

$data=array(
  'foto'=>$this->input->post('foto')
);

$this->input->post('foto')没有获取您的文件名 您可以尝试使用此

 else {
        $id_user=$this->session->userdata('id');
        $info=$this->upload->data();
        $data=array(
        'foto'=>$info['file_name']
        );
        $this->db->where('id',$id_user);
        $this->db->update('user',$data);
        redirect("user");
    }

最好将此行用于上传路径

  $config['upload_path'] = FCPATH.'upload/';

答案 2 :(得分:0)

$ file_name =&#34;&#34 ;;

    if ($_FILES['foto']['error']!= 4) {

        $fileParts = pathinfo($_FILES['foto']['name']);
        $file_name = time() . '.' . $fileParts['extension'];
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';

        $config['file_name'] = $file_name;
        $this->load->library('upload', $config);
        $this->upload->initialize($config);
        $this->upload->do_upload('foto');
    }