我在使用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文件夹位于根应用程序系统中。
任何答案?
非常感谢......
答案 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);
这里有类似的问题: