如何将图像名称与数据库记录匹配?

时间:2014-09-09 11:52:43

标签: php

我遇到了以下问题:

我在文件夹和sql数据库记录中有一些图像。我必须从文件夹中获取所有图像,我们必须将该图像名称与数据库中的字段相匹配。如果它们相同,那么我们必须用另一个名称重命名该图像。我该怎么做?

  <?php
    $query = "Select ITCFields.ImageID,UDFields.Zoho_ID from ITCFields,UDFields where 
    ITCFields.ImageID='1234899'";
    $resa = odbc_exec($conn,$query);
    echo "<table border='1'>
    <tr>
    <th>ZohoID</th>
    <th>Image</th>
    <th>Full_Name</th>
    </tr>";
    while( $row = odbc_fetch_array($resa) ) {
        echo "<tr>";
        $zoho_id=$row['Zoho_ID'];
        $image_id=$row['ImageID'];
        echo "<td>" .$zoho_id."</td>";
        echo "<td>" .$image_id."</td>";
        $full_name=$zoho_id.'_'.$image_id.'.jpg';
        echo "<td>" .$full_name."</td>";
        echo "</tr>";
            }
    odbc_close($conn);

    ?>
<?php
define("BASE_IMAGE_PATH","D:\\");
define("IMAGE_FOLDER_NAME","2014finalfour\\");
define("IMAGE_FOLDER_NAME_MODIFIED","modified\\");
define("IMAGE_File_Path",BASE_IMAGE_PATH.IMAGE_FOLDER_NAME);
define("IMAGE_File_Path_Modified",BASE_IMAGE_PATH.IMAGE_FOLDER_NAME.IMAGE_FOLDER_NAME_MODIFIED);
$srcdir=constant("IMAGE_File_Path");
$destdir=constant("IMAGE_File_Path_Modified");
if (!file_exists(IMAGE_File_Path_Modified)) {
    mkdir(IMAGE_File_Path_Modified, 0777, true);
}

$srcdire=opendir($srcdir);
while($readFile = readdir($srcdire))
{
    if($readFile != '.' && $readFile != '..')
    {
        if (!file_exists($readFile)) 
        {
            if(copy($srcdir . $readFile, $destdir . $readFile ))
            {
                echo "Copy file";
            }
            else
            {
                echo "Canot Copy file";
            }
        }
    }
}

closedir($srcdir);

?>
<?php

$directory=constant("IMAGE_File_Path_Modified");                                
if ($dir = opendir($directory) )
{
    $images = array();
    while (false !== ($file = readdir($dir))) {

        if ($file != "." && $file != "..") {
            $images[] = $file; 

        }

    }

    closedir($dir);

}

foreach($images as $image) {

    echo $image."</br>";

}

?>

请帮助我找到它。

2 个答案:

答案 0 :(得分:0)

图像名称在代码逻辑中非常重要吗?

通常,通过在上传图像名称时将图像名称散列为唯一名称(例如使用unix日期时间值)并将该名称用于所有其他逻辑,可以解决重复图像的问题。因此,名称的唯一名称将成为散列名称,如果需要,您仍然可以使用原始名称作为表格中的另一个字段。

所以问题基本上就是给每个图像一个唯一的名称,然后跟踪它是否是唯一的。

以下是上传图片的代码。

function uploadImage($image,$path,$thumbpath)
{
    if($image!=''){
        $explode=explode('.',$_FILES[$image]['name']);
        $file=time().'.'.$explode[1];
        $file_tempname=$_FILES[$image]['tmp_name'];
        move_uploaded_file($file_tempname,$path.$file);
        createThumb($path.$file,$thumbpath.$file, 80, 80);
    }
    return $file;
}

答案 1 :(得分:0)

首先获取所有文件夹图像名称,而不是与您的数据库图像名称匹配。

$dir = "/images/";
         $img_name = scandir($dir);
         while( $row = odbc_fetch_array($resa) ) { echo "";
           $zoho_id=$row['Zoho_ID']; 
           $image_id=$row['ImageID']; 
           echo "" .$zoho_id.""; 
           echo "" .$image_id."";
           $full_name=$zoho_id.'_'.$image_id.'.jpg';

           if(in_array($full_name,$img_name)){
               //do your chanes
           }
           echo "" .$full_name.""; 


         }