2

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

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

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

4

6 回答 6

6

为此,请使用 CodeIgniter 提供给您的 FCPATH 常量。

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

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

您将使用的三个是:

  • FCPATH- 前端控制器的路径,通常是 index.php
  • APPPATH- 应用程序文件夹的路径
  • BASEPATH- 系统文件夹的路径。
于 2012-09-07T18:01:00.597 回答
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));

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

编辑2:

使用unlink功能:

$this->load->helper("url");
unlink(base_url("uploads/" . $file_name));
于 2012-09-07T14:59:44.917 回答
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);

享受..^^

于 2014-03-19T07:10:49.520 回答
1

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

文件路径 -->> project_name/assets/uploads/file_name.jpg

public function delete_file()
{
    $file = 'file_name.jpg';
    $path = './assets/uploads/'.$file;
    unlink($path);
}
于 2015-03-19T10:08:52.933 回答
0

你应该试试这段代码:

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

或者

delete_files($imagepath . $images);
于 2016-04-01T09:24:35.287 回答
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']);
    }
  }
于 2019-08-19T10:34:51.880 回答