簡體   English   中英

自動圖庫插入

[英]automatic image gallery insert

我已經設置了這個代碼,用於插入上傳到我的“images”文件夾的任何圖像,直接進入我擁有的圖庫....我的問題是它隨機插入它們...我想將它設置為將最近上傳的圖片插入圖庫“行”的末尾,是否有任何建議? 謝謝

<?php

    $image_dir = 'uploads/images/';
    $per_column = 10;       

    if ($handle = opendir($image_dir)) {
        while (false !== ($file = readdir($handle))) 
        {
            if ($file != '.' && $file != '..') 
            {
                if(strstr($file,'.png'))
                {
                    $files[] = $file;
                }
                if(strstr($file,'.jpg'))
                {
                    $files[] = $file;
                }
                if(strstr($file,'.gif'))
                {
                    $files[] = $file;
                }
                if(strstr($file,'.jpeg'))
                {
                    $files[] = $file;
                }
            }
        }
        closedir($handle);
    }

    if(count($files))
    {
        foreach($files as $file)
        {
            $count++;
            echo '<li><img src="',$image_dir,$file,'" width="20" height="20" title="',$file,'"/></li>';
            if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
        }
    }
    else
    {
        echo 'no pictures yet...';
    }

?>
<?php

    $image_dir = 'uploads/images/';
    $per_column = 10;       

    $validExt = array(
        'png' => 'image/png',
        'jpeg' => 'image/jpeg',
        'jpg' => 'image/jpg',
        'gif' => 'image/gif',
    );

    if ($handle = opendir($image_dir)) {
        while (false !== ($file = readdir($handle))) 
        {
            $ext = strtolower(substr($file, -3));
            if (isset($validExt[$ext])) 
            {
                $stats = stat($image_dir.$file);
                $files[$stats['mtime']] = $file;
            }
        }
        closedir($handle);
    }

    $count = 0;
    krsort($files);

    $cnt = count($files);

    if($cnt)
    {
        foreach($files as $file)
        {
            $count++;
           echo '<li><img src="' . $image_dir . $file . '" width="20" height="20" title="' . substr($file, 0, -4) . '"/></li>'.chr(10);
            if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
        }
    }
    else
    {
        echo 'no pictures yet...';
    }

我不確定您的文件格式是什么,但嘗試在上傳時使用time()將文件名設置為當前時間。

列出圖像時,請嘗試使用glob()而不是readdir。

您的代碼可能如下(未經測試):

$image_dir = 'uploads/images/';
$per_column = 10;       

$files = glob($image_dir . "*.jpg|png|gif|jpeg");

if(count($files))
{
    foreach($files as $file)
    {
        $count++;
        echo '<li><img src="',$image_dir,$file,'" width="20" height="20" title="',$file,'"/></li>';
        if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
    }
}
else
{
    echo 'no pictures yet...';
}

將此與為上傳的文件提供當前時間的文件名相結合,這應該按照最近的順序排列您的圖像。

這里最重要的一行是$files = glob($image_dir . "*.jpg|png|gif|jpeg"); 這將掃描目錄中以.jpg.png.gif.jpeg結尾的任何文件( * )。 你不用擔心. .. ; 表達式過濾掉了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM