pixiv風ギャラリー、基本的なところで
漠然と(漠然とじゃ駄目なような気がするが)ファイルとか、ディレクトリの構造について絵を描いてみた。
- メインの画像
- サムネール画像
- 上記の情報と、タイトルや説明、タグを記したファイル
が、1セットとして存在しなければならない。
3つは命名規則で共通の名前がつけられている。
命名に関しては、任意の文字列+連番という形にしたい。それを生成するためのカウントファイルを1つ作る。
以下にソース。
<?php $updir = "./updir/"; //カウントファイルがないなら作る chdir($updir); $countfile="count.txt"; if(!is_file($countfile)){ touch($countfile); if(file_exists($countfile) ){ chmod($countfile,0666); } $fp = fopen($countfile,"w"); //ログをオープン(空になる) fputs($fp,"0"); //ゼロを書き込み fclose ($fp); } //カウント部分。レッツPHPさまから拝借 $fp = fopen("count.txt","r+"); // 読み書きモードでオープン flock($fp, LOCK_EX); // 書き込みロック $count = fgets($fp, 32); // 32バイトorEOFまで取得 $count++; // カウントアップ fseek($fp, 0); // ポインタを先頭に戻す fputs($fp, $count); // 書き込み fclose($fp); // ファイルを閉じる $count = sprintf("%05d", $count); // 5桁にそろえて表示 $new_filename = "img_".$count; echo "new_filename"; ?>
これ実行すると
img_00001
とできるから、設定ファイル名img_00001.txt、画像名img_00001.jpg、サムネ名t_img_00001.jpgを作成あるいはリネームできる。
困ったのはディレクトリをどう振り分けるのかと、タグもこの個別の設定ファイルに入れていいのか、ということ。これは悩むなあ。
この部分、ちゃんと詰めてから取りかかった方がいいんだろうけど、作りながらやる方がわかりやすいんで適当にやっていきます。
で、いざリネームの部分を実装しようとしたけど、アップロードのソースは借り物が多くて、どこをどう弄ったらリネームできるのかわからん。
アップロード、リネーム関連で探してみたらCLASS.UPLOAD.PHPというライブラリがあることを知った。
ファイルアップロード&画像加工を簡単に実現できるクラスライブラリ「CLASS.UPLOAD.PHP」:phpspot開発日誌
class.upload.php samples, a files uploading and images manipulation PHP class - verot.net
サムネもリネームも一発でやってくれて非常に便利そう。こっちでも検討してみるか。