【问题标题】:Check images on server folder against images on database根据数据库上的图像检查服务器文件夹上的图像
【发布时间】:2022-01-18 08:48:46
【问题描述】:

我想知道是否有任何预先制作的东西可以将服务器上的单个图像文件夹与 mysql 数据库上的字段进行比较,以从服务器上取消链接/删除不需要的文件并保持干净。

足够比较图像文件名,但如果带有缩略图/日期,那就太好了。

谢谢

【问题讨论】:

  • 执行SELECT .. INTO OUTFILE,将表中注册的所有文件名保存到文本文件中。然后使用任何 shell 脚本处理此文件并删除未列出的文件。 PS。我怀疑是否存在任何看起来像异国情调的任务的预制仪器。
  • 请更具体地说明“比较”是什么意思。你想比较二进制数据吗?或者只是文件名和文件大小?另外,您的数据库表中有什么?
  • 分享你的代码 sn-p 你尝试了什么

标签: php mysql image file comparison


【解决方案1】:

函数

 if (isset($_GET['delete'])) {
    unlink($_GET['delete']);
}



 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;
}

剩下的代码

<?php  
$servername = "localhost";
$db_name="DATABASE";
$username = "USER";
$password = "PASS";
    $pdo = new PDO("mysql:host=$servername;dbname=$db_name", $username, $password, array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ));
    $query = $pdo->prepare("SELECT * FROM `tweets`");
    $query->execute();
    
      $images = $query->fetchAll(PDO::FETCH_ASSOC);
      if ((!$query->rowCount() == 0)) { 

                        $path = '/path-to-images/'; 
                        $imgList = getImagesFromDir($path);                         
                        $i=0;
                        foreach ($imgList as &$img) {                       
                        ?>                            
                         <div>                            
    <a href="admin.php?delete=<?php echo $_SERVER['DOCUMENT_ROOT']. $path . $img; ?>">
    <img src="<?php echo $path . $img ?>" width="200px" height="auto" style="border-radius:0; margin:10px; border:1px #333 solid" /> 
    </a>
                         <?php foreach ($images as $row => $result) {                                                            
                             if ($result['img']===$img) { ?>        
                        <?php echo '<b>'.$result['img'].'</b><br>'; ?>
                            <?php  } else { ?>                            
                    
                    <?php   } ?>                        
                    <?php   }  ?>
                    <?php   } ?>
                         
                         
                          </div>                                                
                                                                                                                                        
                         
                                                                    
                             <?php $i++;
                              }  ?> 

enter code here

【讨论】:

  • 我知道它很脏,但现在可以胜任了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多