php目录读取和删除现有文件

时间:2011-12-20 00:58:13

标签: php

我正在尝试确保当用户上传个人资料图片时,dir“profile_pic”中只能有一个图片。我正在打开并使用while循环读取目录但是@unlink无法正常工作。下面是php代码:

        $directory = "uploads\\".$id."\images\profile_pic\\";
        if (glob($directory . "*.jpg") != false) {
            $filecount = count(glob($directory . "*.jpg"));
            if ($filecount > 0) {
                //delete exiting pics in folder profile_pic
                $handle = opendir($directory);
                while ($handle && ($file = readdir($handle)) !== false) {
                    if ( unlink($entry)) {
                    $msg .= "File Deleted";
                    }
                }
                closedir($directory);
            }
        }

1 个答案:

答案 0 :(得分:0)

抱歉,你在哪里定义$entry - 你有没有给它分配一个值?为什么你对glob()进行两次完全相同的调用,而不是在变量中捕获第一次调用的结果?当你已经opendir()编辑并获得该文件列表时,为什么还要费心glob()列出文件?特别是当您不对要删除的文件应用相同的*.jpg过滤器时...

这样做:

// Forward slashes work on Windows too (in PHP, at least)
$directory = "uploads/".$id."/images/profile_pic";

if (($existing = glob($directory . "/*.jpg")) !== false) { // Get a list of files...
  foreach ($existing as $file) { // ...loop them...
    $msg .= (unlink($directory."/".$file)) ? "File $file deleted\n" : "Could not delete $file\n"; // ...and delete them
  }
} else $msg .= "Listing directory failed\n";