How to unlink (delete) an image in CodeIgniter

codeigniter, php, unlink

Solution

the unlink function shows notice Undefined index: `userfile`

The upload form, using multipart/form-data

Make sure you've use `enctype="multipart/form-data"` attribute/value for your upload form.

<form action="" method="post" accept-charset="utf-8" enctype="multipart/form-data">

From the MDN:

enctype `multipart/form-data`: Use this value if you are using an `<input>` element with the type attribute set to "file".

If you're going to use CodeIgniter form helper, you could use `form_open_multipart()` function:

This function is absolutely identical to the `form_open()` tag above except that it adds a multipart attribute, which is necessary if you would like to use the form to upload files with.

Deleting files, File path vs URL address

PHP `unlink()` function accepts the Path of the file as the first argument. Not the URL Address.

The `base_url()` helper function returns the URL address of the site, which you've set in the `config.php` file.

You'll have to use the path of the file on your server, as follows:

unlink('/path/to/image/image_name.jpg'); // This is an absolute path to the file

You could use an Absolute or Relative path, but note that the relative path is relative to the `index.php` file. i.e. If the `image/` folder is placed beside `index.php` file, you should use `image/image_name.jpg` as the file path:

unlink('image/image_name.jpg'); // This is a relative path to the file

Problem

I try to `unlink` an image in CodeIgniter, but the `unlink` function shows: notice Undefined index: userfile Here is my code ``` <?php function get_from_post(){ $data['logo_name'] = $this->input->post('logo_name',TRUE); $data['logo_thumb'] = $_FILES['userfile']['name']; return $data; } function deleteconf($data){ $data= $this->get_from_post(); $update_id=$this->uri->segment(3); @unlink(base_url.'image/logo_thumb'.$logo_thumb); $query= $this->_delete($update_id); } ?> ```

Original source