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

时间:2014-12-30 12:34:44

标签: php codeigniter

我在使用codeigniter取消链接或删除文件时遇到问题

这是我的控制器

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

这是我的模特

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));
}

文档是包含图片的列的名称。

如果我单击按钮删除,它会删除数据库中的数据并成功运行,但不会删除文件夹中的图像。我想,当我删除数据时,它也是文件夹上传中的删除图像。 Uploads文件夹位于根应用程序系统中。

任何答案?

非常感谢......

7 个答案:

答案 0 :(得分:0)

这是因为您没有获取结果资源。 使用:

$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);

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

query()函数返回数据库结果对象。所以用以下代码替换你的模型代码:

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));
}

答案 3 :(得分:0)

而不是这个

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

请替换此

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

答案 4 :(得分:0)

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
}

答案 5 :(得分:0)

可以通过目录路径使用它

unlink(FCPATH.'uploads/yourfile');

答案 6 :(得分:-1)

您正尝试使用URL地址删除文件,您必须指定本地文档地址,如下所示:

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

这里有类似的问题:

Cannot unlink file in Codeigniter