2013-07-11 66 views
0

我有一个管理系统,它动态地添加配置文件页面 - 并且它的一部分将图像添加到目录。当我添加图像时,它们都具有名称格式,如12_1.jpg,12_2.jpg,32_1.jpg,32_9.jpg,其中下划线之前的数字是编号$cid,下划线之后的数字是图像编号。PHP删除图像

我试图找到一种方法来在edit-images.php页面上列出图像,并使用删除它们的选项(可能是图像名称旁边的链接或其他更好的方法)。

这里是要找到我需要删除的选项图像的代码:

if ($handle = opendir('../images/company')) { 
    while (false !== ($entry = readdir($handle))) {  
     if (substr(basename($entry), 0, 2) == $cid) { 
     echo $entry . "<br>"; 
     } 
    } 
    closedir($handle); 
} 

我怎么会去从这里删除指定的图像?任何帮助,将不胜感激。

+0

你会问他们想要哪一个结局删除然后删除适当的文件,确保它是你期望的文件之一。如果你尝试并卡住,告诉我们你在哪里,我们会提供帮助。 – Anigel

+0

'$ cid'是什么? – 2013-07-11 13:55:18

+0

'$ cid'是个人资料页面的ID号码 – davelowe85

回答

1

为什么要扫描文件的目录?您可以检查文件是否存在并删除它。例如:

$files = glob("../images/company/$cid_*.jpg"); 
foreach($files as $file) { 
    if(file_exists($file)) unlink($file); 
} 

这将取消链接所有文件../images/company与名称以123_例如和.jpg(您可以通过使用GLOB_BRACE参数提供更多的扩展)

+0

如果我使用了'$ files = glob(“../ images/company/$ cid _ *”);'那会删除所有图片,所以如果某些地方有gif,png的话它会删除它们呢? – davelowe85

+0

是的,例如,它会删除名称中包含'123_'后的所有文件。 –

2

在php中,您使用unlink函数来删除文件。只是回显一个链接到一个页面,调用一个函数做到这一点,并传递图像名称。在实际执行删除之前,请务必检查用户输入。

+0

我不是很清楚。理想情况下,我想列出与个人资料页面关联的所有图像(例如,说明9个图像),然后可以选择一次删除它们,如果可能,请保留在同一页面上? – davelowe85

+0

是的,有两种方式:1.使用Ajax调用另一个页面“在后台”,然后通过javascript或者2:把一个像这样的链接放到yourpage.php?action = deleteimage&img = $ imagename然后通过$ _GET检查动作,执行删除并重新渲染页面。 – Mir

+0

干杯。我想我会选择2前!谢谢你的帮助。 – davelowe85