CodeIgniter - 删除文件,路径问题

时间:2012-09-07 14:58:07

标签: codeigniter

我的根目录中有3个文件夹,“应用程序”,“系统”和“上传”。在application / controllers / mycontroller.php中,我有这行代码。

delete_files("../../uploads/$file_name");

该文件没有被删除,我尝试了许多路径选项,如../和../../../任何想法?感谢。

6 个答案:

答案 0 :(得分:6)

使用CodeIgniter为您提供的FCPATH常量。

unlink(FCPATH . '/uploads/' . $filename);

base_url()生成HTTP网址,不能用于生成文件系统路径。这就是您必须使用其中一个CI路径常量的原因。它们在前端控制器文件(index.php)中定义。

您将使用的三个是:

  • FCPATH - 前端控制器的路径,通常是index.php
  • APPPATH - 应用程序文件夹的路径
  • BASEPATH - 系统文件夹的路径。

答案 1 :(得分:1)

$file_name是一个变量。您应该将它连接到您自己的字符串,以便执行该函数:

delete_files("../../uploads/" . $file_name);

修改

确保这句话:

echo base_url("uploads/" . $file_name);

回显有效路径。如果答案是肯定的,请尝试以下方法:

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

假设您的“uploads”文件夹位于根目录中。

编辑2:

使用unlink功能:

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

答案 2 :(得分:1)

尝试一下..这只是解决您问题的一个非常简单的方法.. 如果您注意到CI在您的目录中定义了base_path,例如在上传库的配置中:

$imagePath = './picture/Temporary Profile Picture/';

$config['upload_path'] = $imagePath;

$config['allowed_types'] = 'gif|jpg|jpeg|png';

$this->load->library('upload', $config);

如果您发现upload_path是'./picture/Temporary Profile Picture /'

所以如果你想从目录中删除一个文件,你所要做的就是使用unlink()函数。

unlink($imagePath . $file_name);

@unlink($imagePath . $file_name);

享受.. ^^

答案 3 :(得分:1)

这段代码对我有用。在您的模型或控制器中尝试此操作。根据您的文件路径更改文件路径。

  

档案路径 - >> PROJECT_NAME /资产/上传/ file_name.jpg

public function delete_file()
{
    $file = 'file_name.jpg';
    $path = './assets/uploads/'.$file;
    unlink($path);
}

答案 4 :(得分:0)

您应该尝试以下代码:

$imagepath = $config['upload_path'];
unlink($imagepath . $images);

delete_files($imagepath . $images);

答案 5 :(得分:0)

 public function deleteContent($id)
 {  
    $this->db->where('Filename',$id);
    $this->db->delete('tableName',array('Filename'=>$id));
    if (unlink("upload/folderName/".$id)) 
    {
      redirect($_SERVER['HTTP_REFERER']);
    }
  }