concoquo

ファイル数のカウント

あるディレクトリに置かれてる画像なんかのファイルの数を取得するのに、それだけのために別にファイルを用意するのもなんかなぁ・と思ったのでちょっと調べてみた。

まずそのディレクトリの”.htaccess”ファイルをいじってサーバがディレクトリの一覧を返すようになったところを、直接そのURLをたたいて強引に取得する方法を自分用にメモ。

.htaccessファイルに

Options Indexes

と記述。

Flash側で

var count:Number = 0;
var countXML:XML = new XML();
countXML.ignoreWhite = true;

function countImage():Void{
  countXML.load(“http://www.hoge.com/hogehoge/”);
  countXML.onLoad = function(succeded){
    if(succeded){
      var str:String = String( this.firstChild.childNodes[1].childNodes[1].childNodes[0] );
      var srcStr:String = “.jpg<";
      while( str.indexOf( srcStr ) > 0){
        str = str.slice( str.indexOf( srcStr ) + srcStr.length );
        count ++;/////
      }
    }
  }
} 

ってな処理。あくまでも今使ってるサーバの返し方に合わせた処理。

hetemlだともうちょい簡単にいける。

function countImage():Void{
  countXML.load(“http://www.hoge.com/hogehoge/”);
  countXML.onLoad = function(succeded){
    if(succeded){
      count = this.firstChild.childNodes[1].childNodes[1].childNodes.length – 1;/////
    }
  }
}

全く持ってスマートじゃあないけど、簡単にいけるのでこれでいいかな。
当初は

function countImage():Void{
  countMcl.addListener(countListener);
  countMcl.loadClip(“hoge/” + count++ + “.jpg”,count_mc);
  countListener.onLoadStart = function(target:MovieClip){
    countMcl.unloadClip(target);
    countImage();
  }
  countListener.onLoadError = function(target:MovieClip,errorCode:String, httpStatus:Number){
    max = count;
    countMcl.unloadClip(target);
    count_mc.removeMovieClip();
  }
}

みたいにカウントしてたけど、連番じゃないと使えないからな・。Flash単体ならこんなもんだろ。