我的根目录中有3个文件夹,“应用程序”,“系统”和“上传”。在application / controllers / mycontroller.php中,我有这行代码。
delete_files("../../uploads/$file_name");
该文件没有被删除,我尝试了许多路径选项,如../和../../../任何想法?感谢。
答案 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']);
}
}