2012-03-12 5 views
0

Моя структура каталогов выглядит так.Проверка наличия миниатюр в PHP

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

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

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

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

+0

Glob(), чтобы получить список, реж Еогеасп() в цикле, file_exists(), чтобы проверить –

+4

[? Что вы пробовали] (http://mattgemmell.com/2008/ 12/08/what-have-you-try /) – j08691

+0

@ j08691 сценарий очень длинный, чтобы опубликовать здесь – heron

ответ

1
$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

что это? лол. Я знаю функцию file_exists(). проблема в том, что я не могу понять, как получить файлы по одному из родительского каталога и проверить его в миниатюрах dir – heron

+0

использовать цикл foreach? и отправить ur код? rofl без него никто не может дать решение – Ghostman

0

Самый простой способ заключается в использовании 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."; 
    } 
} 

Кредит на душу выше для основы. Я просто добавляю в него глобус.

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

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

yo welcome ... :) – Ghostman

+1

Хм, не glob возвращать только существующие файлы? ;) – hakre

+0

Ха, хороший момент, hakre. :) – Jemaclus

3
<?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); 
    } 
} 
Смежные вопросы