Codeigniter replace uploaded image

I am using the Codeigniter File Uploading Class to upload custom avatars. Is there a way to replace a user image file whenever it loads a new one? I want to replace the existing avatar with the most recently loaded one.

My image upload controller

function upload_avatar() { $config['upload_path'] = './uploads/avatars/'; $config['allowed_types'] = 'jpg|png'; $config['overwrite'] = FALSE; //overwrite user avatar $config['encrypt_name'] = TRUE; $config['max_size'] = '200'; //in KB $this->load->library('upload', $config); if ( ! $this->upload->do_upload()) { $error = $this->upload->display_errors(); $this->session->set_flashdata('error', $error); redirect('/settings/avatar'); } else { $config['image_library'] = 'gd2'; $config['source_image'] = $this->upload->upload_path.$this->upload->file_name; $config['create_thumb'] = FALSE; $config['maintain_ratio'] = FALSE; $config['width'] = 120; $config['height'] = 120; $this->load->library('image_lib', $config); $this->image_lib->crop(); //Add image path to database $avatar_path = 'uploads/avatars/' . $this->upload->file_name; $user_id = $this->tank_auth->get_user_id(); $this->Settings_model->update_avatar($avatar_path, $user_id); $this->session->set_flashdata('success', 'Avatar updated!'); redirect('/settings/avatar'); } } 
+4
source share
3 answers

There is a public overwrite attribute that dictates a decision to overwrite the original file. By default, a new file name is created based on the original. Here is the source from Upload.php to CI:

 /* * Validate the file name * This function appends an number onto the end of * the file if one with the same name already exists. * If it returns false there was a problem. */ $this->orig_name = $this->file_name; if ($this->overwrite == FALSE) { $this->file_name = $this->set_filename($this->upload_path, $this->file_name); if ($this->file_name === FALSE) { return FALSE; } } 

So, all you have to do to make rewriting work:

 $this->load->library('upload', $config); $this->upload->overwrite = true; 
+8
source

A simple set of "overide" will be true in your configuration.

 $this->upload->initialize(array( "upload_path"=>$path, "allowed_types"=>"jpg|png|jpeg", "overwrite"=>true )); 
+5
source

You tried to change

 $config['overwrite'] = FALSE; 

to

 $config['overwrite'] = TRUE; 
0
source

All Articles