Codeigniter - 取消链接删除文件不起作用

I have a problem with unlink or delete file with codeigniter

Here is my controller

function delete($id_post=''){
    $this->home_model->delete($id_post);
    $this->session->set_flashdata('danger', "Your photo has been deleted...");
    redirect("home");
}

And this is my model

function delete($id_post=''){
    $file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");
    unlink(base_url("uploads/" . $file_name));
    $sql  = "DELETE FROM post WHERE id_post=?";
    $outp = $this->db->query($sql,array($id_post));
}

Doc is the name of column that contain image.

If i click button delete, it delete a data in database and works successfully but not the image in file folder. I want, when i delete a data it is also delete image in file folder uploads. Uploads folder is in the root aplication system.

Any answer?

Many thanks...

The query() function returns a database result object. So replace your model code with:

function delete($id_post=''){
    $file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");
    $row = $file_name->row();
    $file_name = $row['doc'];
    unlink(base_url("uploads/" . $file_name));
    $sql  = "DELETE FROM post WHERE id_post=?";
    $outp = $this->db->query($sql,array($id_post));
}

This is because you does not fetch your result resource. Use:

$query = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");
$row = $query->result();
$file_name = str_replace('localhost/latihan/uploads/','',$this->db->query("SELECT doc FROM post WHERE post.id_post='".$id_post."'")->row()->doc);
unlink("uploads/" . $file_name);

Try this:

$this->load->helper("url");
unlink(base_url("uploads/" . $file_name));

You are trying to delete your file with URL address you have to specifiy local document address like this:

unlink($_SERVER['DOCUMENT_ROOT']."uploads/".$filename);

here is similiar question:

Cannot unlink file in Codeigniter

Instead of this

$file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");

please replace this

$file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='".$id_post."'")->row()->doc;
function delete($id_post=''){
    $file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");

    $res = $this->db->result();  // this returns an object of all results
    $row = $res[0];            
    $filename = $row['doc']; // get the file name from array
    // do the delete after getting the filename
}

can use this using directory path

unlink(FCPATH.'uploads/yourfile');