簡単漫画アップローダーを作る

過去の日記で宣言したとおり、新しいスクリプトに挑戦中です。
複数アップロード+Web漫画ビューア ComicFlashの自動設定というもの。
アップローダーにはSWFUploadを使用。付属のupload.phpがシンプルすぎる内容のため、これを使ってゴニョゴニョ。
とりあえず、

  • 1回のアップロードで1作品とする
  • 画像ファイルだけでなく必要な設定ファイルを必要な場所にコピーor生成
  • アップされた画像は1.jpg、2.jpg…といった1からはじまる連番形式にしなければならない
  • オプションの拡大機能などはこのさい考えない

とりあえず、フォルダ分け、必要ファイルコピーなどは出来ました!(renameやcopyコマンド使用)
あとはUPされたファイルを連番にするのと、設定ファイル(XML)を生成する、そしてできた漫画ビューアにリンクをはる、等です。

巷にあるWeb漫画のファイル名など見ても、たいがい連番になっていますので、昇順ソートして1.jpg,2.jpg...の形式にリネームすればいけますね!

<?php
//拡張子はちゃんと判断しなきゃなんないけど今回はjpgで

//拡張子
$ext = ".jpg";
//画像ファイル入ってるフォルダ
$directory = "./pages/";

//scandir関数で中身を調べる(配列になる)
$list = scandir($directory);

//$iを配列の添字、$noを新しいファイル名にして、whileでリネーム
$no = 1;
$i = 2;

while ($i <= count($list)-1) {
    
  rename($directory.$list[$i],$directory.$no.$ext);
    $no++;
    $i++;

}

//なんとか動いてます

?>

scandirという関数、php5から使えるそうです。
マニュアルより

<?php
$dir    = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);

print_r($files1);
print_r($files2);
?>

上の例の出力は、たとえば以下のようになります。

Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)
Array
(
    [0] => somedir
    [1] => foo.txt
    [2] => bar.php
    [3] => ..
    [4] => .
)

ファイル名の一覧を配列にしてくれるのですが、ディレクトリ自身(.とか..)を含んでしまうため添字を[2]からにしました。
もっとスマートなやり方あるんでしょうけど。

これで、ファイル名が何から始まっていても連番であれば正しくリネームされるはず…。