Проверка наличия миниатюры в PHP - PullRequest
0 голосов
/ 12 марта 2012

Моя структура каталогов выглядит следующим образом.

 ...photo-album1/
 ...photo-album1/thumbnails/

Допустим, у нас есть image1.jpg внутри photo-album1/.Пиктограмма этого файла tn_image1.jpg

Я хочу проверить каждый файл внутри photo-album1/, есть ли у него миниатюра в photo-album1/thumbnails/.Если они просто продолжают, если нет, отправьте имя файла в другую функцию: generateThumb()

Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 13 марта 2012
<?php

$dir = "/path/to/photo-album1";

// Open directory, and proceed to read its contents
if (is_dir($dir)) {
  if ($dh = opendir($dir)) {
    // Walk through directory, $file by $file
    while (($file = readdir($dh)) !== false) {
      // Make sure we're dealing with jpegs
      if (preg_match('/\.jpg$/i', $file)) {
        // don't bother processing things that already have thumbnails
        if (!file_exists($dir . "thumbnails/tn_" . $file)) {
          // your code to build a thumbnail goes here
        }
      }
    }
    // clean up after ourselves
    closedir($dh);
  }
}
1 голос
/ 12 марта 2012
$dir = '/my_directory_location';
$files = scandir($dir);//or use 
$files =glob($dir);
foreach($files as $ind_file){
if (file_exists($ind_file)) {
    echo "The file $filexists exists";
    } else {
    echo "The file $filexists does not exist";
    }

} 
0 голосов
/ 13 марта 2012

Самый простой способ - использовать функцию PHP glob:

$path = '../photo-album1/*.jpg';
$files = glob($path);
foreach ($files as $file) {
   if (file_exists($file)) {
      echo "File $file exists.";
   } else {
      echo "File $file does not exist.";
   }
}

Благодарность душе за основы.Я просто добавляю glob.

EDIT: Как указывает Хакре, glob возвращает только существующие файлы, поэтому вы можете ускорить его, просто проверив, находится ли имя файла в массиве.Что-то вроде:

if (in_array($file, $files)) echo "File exists.";
...