以下是我在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);
}
}
}
答案 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') {
代替? (注意缺少"
。