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

Delete file a file on the server(not local) with CodeIgniter(3)

我有一个名为 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 是 table 的 Mysql db 并且有不同的列,Url_suffix 是一个 Varchar(255) 列,其中有 folder/filename.pdf。在第二个锚点中,我成功删除了数据库中的行,但没有删除文件。我试着做这样的事情

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

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

更新:

控制器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');


 }


}

?>

您不能以这种方式使用 "unlink",基本上您需要在模型的帮助下在控制器上处理要删除的内容,例如:

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

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

htdocs/website/static/books/user/

并且 $file 参数将是您要删除的带有扩展名的名称,例如:

myfirstbook.pdf

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

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

完成了。 希望对你有帮助。