我正在尝试确保当用户上传个人资料图片时,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);
}
}
答案 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";