同时删除文件夹中的图像及其“'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;
}
}
我创建了一个文件夹“../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;
}
}