[PHP-users 32077] Re: ファイルブラウザ

h.roki.t h.roki.t @ gmail.com
2007年 5月 6日 (日) 01:34:20 JST


こんばんは、高原と申します。

java scriptを使う方法はどうでしょうか?
まず、全てのディレクトリの内容をHTMLで出力します。そして、階層ごとに
div 組します。そして、そのdivをJavaScriptからdisplayやvisibilityのプ
ロパティを変更してあげるようにします。

<div id="first">
+--------------------+
|                    |
| ディレクトリ 1     |   ← このディレクトリがクリックされた場合は、second
|                    |
+--------------------+
          |  <div id="second">
          |  +--------------------+
          |  |                    |
          +--|  ディレクトリ 2    |    ← このディレクトリがクリックされた場合は、third と繰り返す
             |                    |
             +--------------------+
                        |  <div id="third">
                        |  +--------------------+
                        |  |                    |
                        +--|  ディレクトリ 3    |
                           |                    |
                           +--------------------+
                           </div>  <!-- id=third -->
             </div>  <!-- id=second -->
</div> <!-- id=top -->

文字だけだと伝わりにくいかなと思い、図にしてみましたが、上手く伝わりましたでしょうか?

これ、よく使っています。
もっとスマートなやり方があるかもしれないですから、もっと調べてみてください。そしてもっといい方法がありましたら、僕にも教えてください。

よろしくお願いします。

高原

07/05/05 に kaz<okui @ sannet.ne.jp> さんは書きました:
> こんばんは 奥井です。
> phpでファイルブラウザのようなものを作ろうとしています。
> あるディレクトリの内容を表示してディレクトリをクリックしたらさらにそのディレクトリの内容を表示し、ファイルなら拡張子に応じて実行するというようなものを考えています。
> ディレクトリの内容を配列に格納する関数はできましたが、そのディレクトリ内容を表示したりディレクトリをクリックしたらその中のディレクトリを表示するhtml文を作成する方法が思い付きません。検索して色々調べましたがどうもよくわかりません。
> なにか良い方法があればアドバイス宜しくお願いします。
>
>
>
> function make_dirtree($directory){
> static $dircount=0;
> static $filecount=0;
> $dirnum=0;
> $filenum=0;
> if ($handle = opendir($directory)) {
>    while (false !== ($file = readdir($handle))) {
>        if ($file != "." && $file != "..") {
>                if (is_dir($directory.'/'.$file)){
>                $dircount++;
>                $temp_directory[$file] = array('type' => 'directory','name' => $file,'path' => $directory.'/'.$file,'size' => du($directory.'/'.$file)."バイト",'sub' =>make_dirtree($directory.'/'.$file));
>                $dirnum++;
>                } else {
>                $filecount++;
>                $temp_file[$file] = array('type' => 'file','name' => $file,'path' => $directory.'/'.$file,'size' => round((filesize($directory.'/'.$file))/1048576,1)."MB");
>                $filenum++;
>                }
>        }
>    }
> closedir($handle);
> } else {
>        $erorr="ディレクトリのオープンに失敗しました!!";
> }
> ksort($temp_directory);
> ksort($temp_file);
> $result = array_merge($temp_directory,$temp_file,$dirnum,$filenum,$dircount,$filecount);
> return $result;
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>


PHP-users メーリングリストの案内