无法在Codeigniter中取消链接文件

问题描述 投票:6回答:11

在我的项目中,我在root中有一个安全文件夹。项目包看起来像:

application 
secure
system 
...........

在安全文件夹内,我正在使用表单提交上传一些图像

$config1['upload_path'] = './secure/';
$ext = end(explode(".", $_FILES['thumb_image']['name']));
$config1['file_name'] = time().$_FILES['thumb_image']['name'];
$config1['allowed_types'] = 'jpg|png|jpeg|gif|bmp|jpe|tiff|tif';
$this->load->library('upload', $config1);
$this->upload->initialize($config1);
$this->upload->do_upload('thumb_image');

它运作正常。现在在编辑细节时,使用另一个表单,如果我上传新图像而不是当前图像文件,我想取消当前图像链接,然后上传新文件。

为此,我使用的代码:

unlink(base_url("secure/".$data['row']->videothumbnail));

我也尝试过

unlink('/secure/'.$data['row']->videothumbnail);

其中$data['row']->videothumbnail)是数据库中的当前图像文件。新文件已成功上传。但旧文件没有取消链接。我已将安全文件夹的权限设置为777。但图像是以只读权限上传的。是因为这样,它没有被取消联系吗?

任何人都可以帮我解决这个问题吗?

提前致谢。

php codeigniter file-upload unlink
11个回答
1
投票

试试这个:

使用以下命令动态设置权限

@chmod('./secure/'.$data['row']->videothumbnail, 0777);

然后尝试取消链接:

@unlink('./secure/'.$data['row']->videothumbnail);

0
投票
if ($rowAffected > 0) {
                if ($isMediaUpload)
                    if (file_exists('./uploads/' . $this->input->post('img_url')))
                        unlink('./uploads/' . $this->input->post('img_url'));
                            redirect('/admin/configration', 'location');
            }

0
投票

虽然我来晚了但有人可能需要这个。

unlink(FCPATH."secure/".$data['row']->videothumbnail)

**FCPATH** - path to front controller, usually index.php
**APPPATH** - path to application folder
**BASEPATH** - path to system folder.

0
投票

尝试回显您提供的用于取消链接功能的路径。

它应该是这样的:

base_url()."secure/".$data['row']->videothumbnail;

0
投票

即使在对文件夹设置了正确的权限后,我也遇到了这个问题。但是以下代码对我有用。

unlink(realpath(APPPATH . '../uploads').'/'.$ImageName);      

0
投票

尝试使用$_SERVER['DOCUMENT_ROOT']而不是base_url


0
投票
$this->load->helper("file") 
unlink(base_url('folder/file.ext'));

地点:

\程序\控制器

\ SYSTEM \库

**文件夹\ file.ext **


0
投票
$unlinkUrl = "secure/".$data['row']->videothumbnail;
if(file_exists($unlinkUrl)){
    unlink($unlinkUrl);
}
else{
    echo $unlinkUrl." is not available";    
}

0
投票

我想你只是犯了一个愚蠢的错误。

  • 首先,unlink的第一个参数应该是相对路径或绝对路径,但base_url函数将返回一个包含域名的路径,你如何删除远程服务器上的文件?
  • 其次,'/secure/'.$data['row']->videothumbnail这里不是相对路径,而是绝对路径

你必须把它变成/the/absolute/path/to/secure/./the/relative/path/to/secure/(不要错过点)


0
投票

用这个取消链接

$oldthumb = "secure/".$data['row']->videothumbnail;
@unlink($oldthumb);

0
投票

首先加载$this->load->helper("file")然后取消链接

unlink("secure/".$data['row']->videothumbnail);
© www.soinside.com 2019 - 2024. All rights reserved.