使用CodeIgniter(3)删除服务器(非本地)上的文件

时间:2016-03-16 17:37:58

标签: php mysql codeigniter server unlink

我有一个名为home_view的视图,其中有几个列表,例如libri(books)。用户可以上传和删除文件。

这是home_view.php的片段

<?php  


echo "<table>";
echo "<tbody>";
echo "</br>";

 foreach ($libri as $row):
?>
      <tr>
        <td>
          <div>
            </br>
         <img src="<?php echo base_url('Immagini/book.png'); ?>" />
          <a class="pdf" data-fancybox-type="iframe" rel="group" href="<?php  echo base_url($row['Url_suffix']) ?>"><?php echo $row['Nome']; ?> </a>
        <a  class="deleteUser" href="javascript:void(0)" rel="<?php  echo site_url('libro/elimina/'.$row['ID']) ?>"><img src="<?php echo base_url('Immagini/button_close.png'); ?>"/></a> 


            </div>
    </td>
    </tr>
<?php
 endforeach;

       ?> 

libri是一个Mysql数据库表,有不同的列,Url_suffix是一个Varchar(255)列,其中有folder/filename.pdf。在第二个锚中我成功删除了来自DB的行,但不是文件。我试着做这样的事情

<a  class="deleteUser"  rel="<?php  unlink($row['Url_suffix']);  ?>"><img src="<?php echo base_url('Immagini/button_close.png'); ?>"/></a>

但没有成功。我错了什么?

更新

controller libro.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Libro extends CI_Controller {

 public function __construct()
 {
   parent::__construct();
   $this->load->helper("file");
 }

 public function elimina($libri_id) {

  //$libri_ID = $this->libri->get_one($libri_id);
 $result=$this->libri->did_delete_row($libri_id);

                    redirect(site_url('admin/dashboard'), 'refresh');


 }


}

?>

1 个答案:

答案 0 :(得分:2)

您无法使用&#34;取消关联&#34;这样,基本上你需要在模型的帮助下处理你想要在控制器上删除的内容,例如:

public function delete_file($route, $file){
   unlink($route . "/" . $file);
}

在模型中,您可以在任何地方使用它,$ route参数将是存储文件的目录的路径,例如:

htdocs/website/static/books/user/

$ file参数将是您要删除的扩展名,例如:

myfirstbook.pdf

然后你将拥有该文件的完整路径并将被删除,你只需要从控制器中由该锚点给出链接的模型中调用该函数,例如

<a href="http://localhost/website/delete-file/$user/$name">Delete file</a>

你的控制器会有类似

的东西
public function delete_file($user, $file){
   $this->load->model('YourModel', 'yourmodel');
   $path = FCPATH . "static/books/user/".$user;
   $this->yourmodel->delete_file($path, $file);
}

完成了。 希望它有所帮助。