提问人:Australopythecus 提问时间:12/15/2021 更新时间:1/23/2022 访问量:169
根据数据库上的图像检查服务器文件夹上的图像
Check images on server folder against images on database
问:
我想知道是否有任何预制的东西可以将服务器上的单个图像文件夹与 mysql 数据库上的字段进行比较,以取消/删除服务器中不需要的文件并保持其清洁。
足够比较图像文件名,但如果带有 thumnbnails/dates 就很棒了。
谢谢
答:
0赞
Australopythecus
12/15/2021
#1
文件顶部
if (isset($_GET['delete'])) {
unlink($_GET['delete']);
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
function getImagesFromDir($path) {
$images = array();
if ( $img_dir = @opendir($_SERVER['DOCUMENT_ROOT'].$path) ) {
while ( false !== ($img_file = readdir($img_dir)) ) {
// checks for gif, jpg, png
if ( preg_match("/(\.gif|\.jpg|\.png)$/", $img_file) ) {
$images[] = $img_file;
}
}
closedir($img_dir);
}
return $images;
}
自定义表单,用于选择mysql TABLE和FIELD名称以及SERVER FOLDERS
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div class="form-group">
<select name="tablename">
<option value="<?php if (isset($_GET['tablename'])) { echo $_GET['tablename']; } ?>"><?php if (isset($_GET['tablename'])) { echo $_GET['tablename']; } ?></option>
<option value="TABLENAME1">TABLENAME1</option>
<option value="TABLENAME2">TABLENAME2</option>
</select>
<select name="fieldname">
<option value="<?php if (isset($_GET['fieldname'])) { echo $_GET['fieldname']; } ?>"><?php if (isset($_GET['fieldname'])) { echo $_GET['fieldname']; } ?></option>
<option value="FIELDNAME1">FIELDNAME1</option>
<option value="FIELDNAME2">FIELDNAME2</option>
</select>
<select name="folder">
<option value="<?php if (isset($_GET['folder'])) { echo $_GET['folder']; } ?>"><?php if (isset($_GET['folder'])) { echo $_GET['folder']; } ?></option>
<option value="RELATIVE_PATH_1"</option>
<option value="RELATIVE_PATH_2"</option>
</select>
<input type="submit" value="Send" class="btn btn-primary">
</div>
</form>
现在,让我们根据表单上的请求,从数据库表上不存在的 FOLDER 中检索图像:
<?php if ((isset($_GET['tablename'])) && (isset($_GET['fieldname'])) && (isset($_GET['folder'])) ) {
$pdo = new PDO("mysql:host=$servername;dbname=$database", $username, $password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
if (isset($_GET['tablename'])) {
$table = $_GET['tablename'];
}
$query = $pdo->prepare("SELECT * FROM $table");
$query->execute();
$dbimages = $query->fetchAll(PDO::FETCH_ASSOC);
if ((!$query->rowCount() == 0)) {
$arraydbimg = array();
foreach ($dbimages as $row => $result) {
$arraydbimg[] = $result['img'];
}
}
if (isset($_GET['folder'])) {
$path = $_GET['folder'];
} else {
$path = '/your-default/images-folder/';
}
$imgList = getImagesFromDir($path);
$i=0;
foreach ($imgList as &$img) {
if (!in_array($img, $arraydbimg)) { ?>
<br clear="all">
<a href="admin.php?delete=<?php echo urlencode($_SERVER['DOCUMENT_ROOT']. $path . $img); ?>">
<img src="<?php echo $path . $img ?>" width="150px" height="auto" style="border-radius:0; margin:10px; border:1px #333 solid" />
</a><?php echo $img; ?>
<? } } } ?>
点击图片,只是如果你想擦除!
评论
0赞
Australopythecus
12/15/2021
我知道这很脏,但目前已经完成了这项工作。
评论
SELECT .. INTO OUTFILE