2011年6月20日月曜日

PHPで写真共有サイト構築 -3 ファイルリスト表示

今回はアップロードされたファイル一覧を表示する。

一覧表示するまえの画面からは写真アップされたDir(photoDir)が
渡される。

ディレクトリ構成としては、

photoDir/images

              /thumbs
以下ポイント。
  1. サムネイル画像ディレクトリ内のファイルを検索して取得
  2. ソート処理でファイル名をソート
  3. サムネイル画像クリック時にimages画像を表示できるようにリンクをつける
  4. cssのclear='left'で5枚ごとにサムネイルを改行

まず、1.のサムネイル画像ディレクトリのファイル検索方法。
PHPでディレクトリが存在するかどうかと読み込み可能かのチェックを行う。

それでOKならdir関数を使ってディレクトリクラスを取得する。

if (is_dir($thumbDir) and ($thumbDir != "/")) {
    if(is_readable($thumbDir)){// — ファイルが読み込み可能かどうか
      $ch_dir = dir($thumbDir); //ディレクトリクラス

つぎに2.のソート処理を行う。
あらかじめupload時に写真作成日時でファイル名を作成しているので、ソートすることで
時系列に一覧を表示できる。

ソート処理はarray関数で配列を作成し、そこにarray_push関数でファイル名を詰め込んだ後、
sort関数を呼び出せばOK。

// ソート処理
      $array_file = array();
      while (false !== ($file_name = $ch_dir -> read())){
        //ファイル名配列に順に入れていく
        array_push($array_file, $file_name);
      }
      sort($array_file);
      $ch_dir -> close();


後は4.ソートされたファイル名をもとにサムネイルを並べるとともに、
そこにリンクをはる。

またその際に、5.cssのclear='left'でサムネイル画像の回り込みを解除することで
改行するようにする。今回は5つ画像を表示すればが改行する。

//ディレクトリ内の画像を一覧表示
      foreach ($array_file as $key => $val) {
        $file_name = $val;
        $thumb_path = $thumbDir .$file_name;
        $image_path = $imageDir .$file_name;
        if (@getimagesize($thumb_path)){ //画像かどうか?
          echo "
"; echo ""; echo ""; echo ""; echo "
"; $cnt++; } if ($cnt>=5) { echo "
"; $cnt = 0; } }

これで一覧表示は完了!!

0 件のコメント:

試験結果

昨日の夜、CGーArtsエンジニアのベーシック、エキスパートの自己採点をした。 実は日曜日には回答が出ていたけど、自信がなく採点するのもやめようかと思っていたがタイミング&勢いでやってしまった。 <結果>  ベーシック:85点  エキスパート:72.5点 70点以上で合格なので...