同时删除文件夹中的图像及其“'mini'”大小

delete image in folder and his ''mini'' size in same time

我创建了一个文件夹“../img/travaux/villa”,其中包含我的图片,所以当我上传图片时,我制作了一个脚本,在新文件夹中创建此图片的 "mini" 副本“../img/travaux/villa/mini”,同名.

现在我想制作一个删除我的图片的按钮,但我也想同时删除 "mini" 图片我该怎么做?

这是我用于显示和删除图像的代码,但不会删除迷你图像:

<?php
if (array_key_exists('delete_file', $_POST)) {
    $filename = $_POST['delete_file'];
    if (file_exists($filename)) {
        unlink($filename);
        echo 'File '.$filename.' has been deleted';
    } else {
        echo 'Could not delete '.$filename.', file does not exist';
    }
}
$folder = glob("../img/travaux/villa/*jpg");
foreach ($folder as $picture) {
    echo "<div class='divimages'>"; 
    echo '<img src="'.$picture.'"/>';
    echo '<form method="post">';
 echo '<input type="hidden" value="'.$picture.'" name="delete_file" />';
    echo '<input type="submit" class="delete-button" value="Delete image" />';
    echo '</form>';
    echo "</div>";  
}
?>

你可以这样试试:

$fileName = basename($_POST['delete_file']);
// this will remove the path and leave only the name of the file.
$filePath = 'your full path'.'/'.$fileName;
// now build the 'mini image' full path - like '/var/www/project/img/travaux/villa/mini'.'/'.$fileName
if (file_exists($filePath)) {
    unlink($filePath);
    echo 'File '.$filePath.' has been deleted';
} else {
    echo 'Could not delete '.$filePath.', file does not exist';
}

注意:这只会删除 'mini' 图片。您需要将其添加到现有代码中才能同时删除主图像

在取消链接主图后添加这行代码:

unlink(pathinfo($filename, PATHINFO_DIRNAME).'/mini/'.pathinfo($filename, PATHINFO_BASENAME));

您应该创建一个简单的文件删除器函数,它接受一个文件名数组。并使用展位名称调用该函数。这是一个灵活的解决方案,因为变化的部分发生在外面。

您的代码中存在漏洞,有人可以从您的网站根文件夹中删除任何文件,小心!

您可以试试下面的代码:

$paths = array(
    'orig' => '../img/travaux/villa/',
    'mini' => '../img/travaux/villa/mini/',
);

if (array_key_exists('delete_file', $_POST)) {
    $filename = basename($_POST['delete_file']);
    foreach($paths as $path) {
        if (file_exists($path.$filename)) {
            if(!unlink($path.$filename)) {
                $error = 'File '.$filename.' could not be deleted';
            }
            else {
                echo 'File '.$filename.' has been deleted';
            }
        }
        else {
            $error = 'Could not delete '.$filename.', file does not exist';
        }
        if($error) echo $error;
    }
}