无法在Codeigniter中取消链接文件

时间:2014-04-02 06:49:23

标签: php codeigniter file-upload unlink

在我的项目中,我在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。但图像是以只读权限上传的。是因为这样,它没有被取消联系吗?

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

提前致谢。

11 个答案:

答案 0 :(得分:1)

试试这个:

使用以下方式动态设置权限:

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

然后尝试取消链接:

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

答案 1 :(得分:0)

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

它应该是这样的:

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

尝试使用$_SERVER['DOCUMENT_ROOT']代替base_url

答案 5 :(得分:0)

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

位置:

\应用\控制器

\ SYSTEM \文库

**文件夹\ file.ext **

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

  • 首先,unlink的第一个参数应该是相对路径或绝对路径,但是base_url函数会返回一个包含域名的路径,如何删除远程文件服务器?

  • 其次,'/secure/'.$data['row']->videothumbnail这里不是相对路径而是绝对路径

您必须将其更改为/the/absolute/path/to/secure/./the/relative/path/to/secure/不要错过点

答案 8 :(得分:0)

使用此方法取消链接

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

答案 9 :(得分: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');
            }

答案 10 :(得分: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.