删除上传的文件,其名称与定义的名称相同

时间:2012-11-26 17:40:10

标签: php codeigniter

以下是我在codeigniter中的上传功能。我可以上传文件。我还检查文件名是否与url参数匹配。如果名称与网址不匹配,如何删除文件。我尝试了取消链接功能,但它不起作用

function do_upload() {

    $this->makeDir();

    $labref = $this->uri->segment(3);
    $filename = 'xyz/'. date('Y').'/'.date('M').'/'. $labref .'/' . $labref . '.xlsx';
    if (file_exists($filename)) {
        $data['labref'] = $this->uri->segment(3);
        $data['settings_view'] = 'analyst_file_present_v';
        $this->base_params($data);
    } else {

        $config['upload_path'] = 'xyz/'. date('Y').'/'.date('M').'/'. $labref  ;
        $config['allowed_types'] = 'xls|xlsx';
        $this->load->library('upload', $config);
        $data=  $this->upload->data();
        if ($data['file_name']=="$labref.'.xlsx'") {                
          $this->SaveFileDetails();
        $this->success();
        }else{            
         $filename = 'xyz/'.date('Y').'/'.date('M').'/'. $labref.'/'.$labref.'xlsx'  ;
           unlink($filename);
           echo 'You have uploaded a wrong file';
        }

        if (!$this->upload->do_upload('worksheet')) {
            $data['labref'] = $this->uri->segment(3);
            $data['error'] = $this->upload->display_errors();

            $data['settings_view'] = 'upload_analyst_v';
            $this->base_params($data);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

在我看来,你试图删除错误的文件。

你应该替换:

$filename = 'xyz/'.date('Y').'/'.date('M').'/'. $labref.'/'.$labref.'xlsx'  ;

使用:

$filename = 'xyz/'.date('Y').'/'.date('M').'/'. $labref.'/' . $data['file_name'];

删除上传的文件。

修改:您必须先实际上传,然后才能访问错误和数据,以便将$this->upload->do_upload()块移至if语句之前。

答案 1 :(得分:0)

你有一些非常讨厌的引用不匹配:

    if ($data['file_name']=="$labref.'.xlsx'") {                
                                     ^-----^---

由于您使用的是双引号字符串,因此'将成为文件名的一部分。也许你的意思是:

   if ($data['file_name']== $labref .'.xlsx') {

代替? (注意缺少"