我遇到了以下问题:
我在文件夹和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>";
}
?>
请帮助我找到它。
答案 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."";
}