Php 更新Codeigniter中的图片/图像

Php 更新Codeigniter中的图片/图像,php,codeigniter,file-upload,upload,Php,Codeigniter,File Upload,Upload,我正在尝试为想要更改照片的用户创建更新图像。当我单击照片上载上的提交时,没有照片上载,照片栏仍然没有更新 这是我的控制者: function foto($id='') { $data['data'] = $this->user_model->get_foto($id); $data['form_action'] = site_url("user/update_foto/$id"); $this->load-&

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

这是我的控制者:

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>

请尝试更换控制器上的

或者您可以使用uri段参考用户指南

site_url("user/update_foto") ./. $this->uri->segment(4); // unsure id check uri segment in url.
您的路线可能需要更改

$route['user/update\u foto/(:any)]=“controllername/foto/$1”


所有方法都要确保控制器在您的型号上有index()

,这是错误的

$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/';
$file_name=“”


不会导致表单提交。尝试将其更改为
,如果这是有效的解决方案,也可以通过添加name属性来解决:
保存
 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/';
    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');
    }