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

サムネもリネームも一発でやってくれて非常に便利そう。こっちでも検討してみるか。