[PHP文件管理器]①①--查看文件夾的大小

Paste_Image.png

修改代碼

/**
 * 得到文件夾大小
 * @param unknown $path
 * @return Ambigous <unknown, number>
 */
function dirSize($path){
    $sum=0;
    global $sum;
    $handle=opendir($path);
    while (($item=readdir($handle))!==false){
        if($item!="."&&$item!=".."){
        if(is_file($path."/".$item)){
            $sum+=filesize($path."/".$item);
        }
        if(is_dir($path."/".$item)){
            $func=__FUNCTION__;
            $func($path."/".$item);//遞歸
        }
    }   
    }
    closedir($handle);
    return $sum;
}
    <!-- 讀取目錄的操作 -->
        <?php
        if ($arr ['dir']) {
            
            foreach ( $arr ['dir'] as $val ) {
                $p = $path . "/" . $val;
                ?>
            <tr>
                <td><?php echo $i;?></td>
                <td><?php echo $val;?></td>
                <td><?php $src=filetype($p)=='file'?"file_ico.png":"folder_ico.png";?>
                <img src="images/<?php echo $src;?>" alt="" title="文件" /></td>
                <td><?php $sum=0;echo transByte(dirSize($p));?></td>
                <td><?php $src=is_readable($p)?"correct.png":"error.png"?>
            <img src="images/<?php echo $src?>" alt="" class="small" /></td>
                <td><?php $src=is_writeable($p)?"correct.png":"error.png"?>
            <img src="images/<?php echo $src?>" alt="" class="small" /></td>
                <td><img
                    src="images/<?php echo (is_executable($p)? "correct.png":"error.png");?>"
                    alt="" class="small" /></td>
                <td>
            <?php echo date("Y-m-d H:i:s",filectime($p))?>
            </td>
                <td>
            <?php echo date("Y-m-d H:i:s",filemtime($p))?>
            </td>
                <td>
            <?php echo date("Y-m-d H:i:s",fileatime($p))?>
            </td>
                <a href="index.php?act=editContent&filename=<?php echo $p?>"><img
                    class="small" src="images/edit.png" alt="" title="修改" /></a>|
                <a href="index.php?act=renameFile&filename=<?php echo $p;?>"><img
                    class="small" src="images/rename.png" alt="" title="重命名" /></a>|
                <a href=""><img class="small" src="images/copy.png" alt=""
                    title="復(fù)制" /></a>|
                <a href="">![](images/cut.png)</a>|
                <a href="" onclick="return delFile('<?php echo $p;?>')"><img
                    class="small" src="images/delete.png" alt="" title="刪除" /></a>|
                <a href="index.php?act=downFile&filename=<?php echo $p?>"><img
                    class="small" src="images/download.png" alt="" title="下載" /></a>
                </td>

            </tr>
            
            
        <?php
                $i++;
            }
        }
        ?>

index.php

<?php
require_once ('dir.func.php');
require_once 'file.func.php';
require_once 'common.func.php';

$path = 'file';
$path = isset ( $_REQUEST ['path'] ) ? $_REQUEST ['path'] : $path;
$arr = readDirectory ( $path );
$act = isset ( $_REQUEST ['act'] ) ? $_REQUEST ['act'] : '';
$filename = isset ( $_REQUEST ['filename'] ) ? $_REQUEST ['filename'] : '?';
$redirect = "index.php?path={$path}";
// echo $act."<br/>";
// echo $filename;

if ($act == '創(chuàng)建文件') {
    $mes = createFile ( $path . "/" . $filename );
    alertMes ( $mes, $redirect );
} else if ($act == 'showContent') {
    // 查看文件內(nèi)容
    $content = file_get_contents ( $filename );
    if (strlen ( $content )) {
        // textarea能完整顯示代碼
        // echo "<textarea col='1000' rows='10'>$content</textarea>";
        
        // 高亮顯示字符創(chuàng)中的PHP代碼 true不自動(dòng)輸出(echo)
        $newContent = highlight_string ( $content, true );
        // 高亮顯示文件中的PHP代碼
        // $content=highlight_file($filename,true);
        
        $str = <<<EOF
    <table width='100%' bgcolor='pink' cellpadding='5' cellspacing='0'>
        <tr>
            <td>
                {$newContent}
            </td>
        </tr>
    </table>
EOF;
        echo $str;
    } else {
        alertMes ( "文件沒有內(nèi)容,請(qǐng)編輯再查看!", $redirect );
    }
} else if ($act == 'editContent') {
    $content = file_get_contents ( $filename );
    $str = <<<EOF
    <form action='index.php?act=doEdit' method='post'>
        <textarea name='content' col='190' rows='10'>{$content}</textarea>
        <input type='hidden' name='filename' value='{$filename}'/>
        <input type="submit" value="修改文件內(nèi)容"/>
    </form>
EOF;
    echo $str;
} else if ($act == "doEdit") {
    // 修改文件內(nèi)容的操作
    $content = $_REQUEST ['content'];
    // echo $content;
    if (file_put_contents ( $filename, $content )) {
        $mes = "文件修改成功";
    } else {
        $mes = "文件修改失敗";
    }
    alertMes ( $mes, $redirect );
} else if ($act == "renameFile") {
    // 完成重命名
    $str = <<<EOF
        <form action="index.php?act=doRename" method="post">
        請(qǐng)?zhí)顚懶挛募?<input type="text" name="newname" placeholder="重命名"/>
            <input type='hidden' name='filename' value='{$filename}'/>
            <input type="submit" value="重命名"/>
        </form>
EOF;
    echo $str;
} else if ($act == 'doRename') {
    // 實(shí)現(xiàn)重命名操作
    $newname = $_REQUEST ['newname'];
    $mes = renameFile ( $filename, $newname );
    alertMes ( $mes, $redirect );
} else if ($act == 'delFile') {
    $mes = deleteFile ( $filename );
    alertMes ( $mes, $redirect );
} else if ($act == 'downFile') {
    // 完成下載的操作
    $mes = downFile ( $filename );
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
<link rel="stylesheet" href="cikonss.css" />
<script src="jquery-ui/js/jquery-1.10.2.js"></script>
<script src="jquery-ui/js/jquery-ui-1.10.4.custom.js"></script>
<script src="jquery-ui/js/jquery-ui-1.10.4.custom.min.js"></script>
<link rel="stylesheet"
    href="jquery-ui/css/ui-lightness/jquery-ui-1.10.4.custom.css"
    type="text/css" />
<style type="text/css">
body,p,div,ul,ol,table,dl,dd,dt {
    margin: 0;
    padding: 0;
}

a {
    text-decoration: none;
}

ul,li {
    list-style: none;
    float: left;
}

#top {
    width: 100%;
    height: 48px;
    margin: 0 auto;
    background: #E2E2E2;
}

#navi a {
    display: block;
    width: 48px;
    height: 48px;
}

#main {
    margin: 0 auto;
    border: 2px solid #ABCDEF;
}

.small {
    width: 25px;
    height: 25px;
    border: 0;
}
</style>
<script type="text/javascript">
    function show(dis){
    document.getElementById(dis).style.display="block";
    }
    function delFile(filename){
        if(window.confirm("您確定要?jiǎng)h除嘛?刪除之后無法恢復(fù)喲!!!")){
                location.href="index.php?act=delFile&filename="+filename;
        }
        return false;
    }

    function showDetail(t,filename){
        $("#showImg").attr("src",filename);
        $("#showDetail").dialog({
              height:"auto",
              width: "auto",
              position: {my: "center", at: "center",  collision:"fit"},
              modal:false,//是否模式對(duì)話框
              draggable:true,//是否允許拖拽
              resizable:true,//是否允許拖動(dòng)
              title:t,//對(duì)話框標(biāo)題
              show:"slide",
              hide:"explode"
        });
        }
    
    function goBack($back){
        location.href="index.php?path="+$back;
    }
</script>
</head>

<body>
    <div id="showDetail" style="display: none">
        <img src="" id="showImg" alt="" />
    </div>
    <h1>慕課網(wǎng)-在線文件管理器</h1>
    <div id="top">
        <ul id="navi">
            <li><a href="index.php" title="主目錄"><span
                    style="margin-left: 8px; margin-top: 0px; top: 4px;"
                    class="icon icon-small icon-square"><span class="icon-home"></span></span></a></li>
            <li><a href="#" onclick="show('createFile')" title="新建文件"><span
                    style="margin-left: 8px; margin-top: 0px; top: 4px;"
                    class="icon icon-small icon-square"><span class="icon-file"></span></span></a></li>
            <li><a href="#" onclick="show('createFolder')" title="新建文件夾"><span
                    style="margin-left: 8px; margin-top: 0px; top: 4px;"
                    class="icon icon-small icon-square"><span class="icon-folder"></span></span></a></li>
            <li><a href="#" onclick="show('uploadFile')" title="上傳文件"><span
                    style="margin-left: 8px; margin-top: 0px; top: 4px;"
                    class="icon icon-small icon-square"><span class="icon-upload"></span></span></a></li>

            <li><a href="#" title="返回上級(jí)目錄" onclick="goBack('')"><span
                    style="margin-left: 8px; margin-top: 0px; top: 4px;"
                    class="icon icon-small icon-square"><span class="icon-arrowLeft"></span></span></a></li>
        </ul>
    </div>
    <form action="index.php" method="post" enctype="multipart/form-data">
        <table width="100%" border="1" cellpadding="5" cellspacing="0"
            bgcolor="#ABCDEF" align="center">
            <tr id="createFolder" style="display: none;">
                <td>請(qǐng)輸入文件夾名稱</td>
                <td><input type="text" name="dirname" /> <input type="hidden"
                    name="path" value="<?php echo $path;?>" /> <input type="submit"
                    name="act" value="創(chuàng)建文件夾" /></td>
            </tr>
            <tr id="createFile" style="display: none;">
                <td>請(qǐng)輸入文件名稱</td>
                <td><input type="text" name="filename" /> <input type="hidden"
                    name="path" value="<?php echo $path;?>" /> <input type="submit"
                    name="act" value="創(chuàng)建文件" /></td>
            </tr>
            <tr id="uploadFile" style="display: none;">
                <td>請(qǐng)選擇要上傳的文件</td>
                <td><input type="file" name="myFile" /> <input type="submit"
                    name="act" value="上傳文件" /></td>
            </tr>
            <tr>
                <td>編號(hào)</td>
                <td>名稱</td>
                <td>類型</td>
                <td>大小</td>
                <td>可讀</td>
                <td>可寫</td>
                <td>可執(zhí)行</td>
                <td>創(chuàng)建時(shí)間</td>
                <td>修改時(shí)間</td>
                <td>訪問時(shí)間</td>
                <td>操作</td>
            </tr>
        <?php
        if ($arr ['file']) {
            $i = 1;
            foreach ( $arr ['file'] as $val ) {
                $p = $path . "/" . $val;
                ?>
            <tr>
                <td><?php echo $i;?></td>
                <td><?php echo $val;?></td>
                <td><?php $src=filetype($p)=='file'?"file_ico.png":"folder_ico.png";?>
                <img src="images/<?php echo $src;?>" alt="" title="文件" /></td>
                <td><?php echo transByte(filesize($p));?></td>
                <td><?php $src=is_readable($p)?"correct.png":"error.png"?>
            <img src="images/<?php echo $src?>" alt="" class="small" /></td>
                <td><?php $src=is_writeable($p)?"correct.png":"error.png"?>
            <img src="images/<?php echo $src?>" alt="" class="small" /></td>
                <td><img
                    src="images/<?php echo (is_executable($p)? "correct.png":"error.png");?>"
                    alt="" class="small" /></td>
                <td>
            <?php echo date("Y-m-d H:i:s",filectime($p))?>
            </td>
                <td>
            <?php echo date("Y-m-d H:i:s",filemtime($p))?>
            </td>
                <td>
            <?php echo date("Y-m-d H:i:s",fileatime($p))?>
            </td>
            <?php
                // 得到文件擴(kuò)展名
                // explode 將字符串打散為數(shù)組
                // end() 函數(shù)將內(nèi)部指針指向數(shù)組中的最后一個(gè)元素,并輸出
                $ext = strtolower ( end ( explode ( ".", $val ) ) );
                $imageExt = array (
                        "gif",
                        "jpeg",
                        "jpg",
                        "png" 
                );
                // in_array() 函數(shù)搜索數(shù)組中是否存在指定的值。
                if (in_array ( $ext, $imageExt )) {
                    ?>
                <td><a href="#"
                    onclick="showDetail('<?php echo $val;?>','<?php echo $p;?>')"><img
                        class="small" src="images/show.png" alt="" title="查看" /></a>|
                <?php
                } else {
                    ?>
                
                
                
                
                <td><a href="index.php?act=showContent&filename=<?php echo $p?>"><img
                        class="small" src="images/show.png" alt="" title="查看" /></a>|
                <?php
                }
                ?>
    
                <a href="index.php?act=editContent&filename=<?php echo $p?>"><img
                        class="small" src="images/edit.png" alt="" title="修改" /></a>| <a
                    href="index.php?act=renameFile&filename=<?php echo $p;?>"><img
                        class="small" src="images/rename.png" alt="" title="重命名" /></a>| <a
                    href="">![](images/copy.png)</a>|
                    <a href=""><img class="small" src="images/cut.png" alt=""
                        title="剪切" /></a>| <a href=""
                    onclick="return delFile('<?php echo $p;?>')"><img class="small"
                        src="images/delete.png" alt="" title="刪除" /></a>| <a
                    href="index.php?act=downFile&filename=<?php echo $p?>"><img
                        class="small" src="images/download.png" alt="" title="下載" /></a></td>

            </tr>
            
            
        <?php
                $i ++;
            }
        }
        ?>
        
        <!-- 讀取目錄的操作 -->
        <?php
        if ($arr ['dir']) {
            
            foreach ( $arr ['dir'] as $val ) {
                $p = $path . "/" . $val;
                ?>
            <tr>
                <td><?php echo $i;?></td>
                <td><?php echo $val;?></td>
                <td><?php $src=filetype($p)=='file'?"file_ico.png":"folder_ico.png";?>
                <img src="images/<?php echo $src;?>" alt="" title="文件" /></td>
                <td><?php $sum=0;echo transByte(dirSize($p));?></td>
                <td><?php $src=is_readable($p)?"correct.png":"error.png"?>
            <img src="images/<?php echo $src?>" alt="" class="small" /></td>
                <td><?php $src=is_writeable($p)?"correct.png":"error.png"?>
            <img src="images/<?php echo $src?>" alt="" class="small" /></td>
                <td><img
                    src="images/<?php echo (is_executable($p)? "correct.png":"error.png");?>"
                    alt="" class="small" /></td>
                <td>
            <?php echo date("Y-m-d H:i:s",filectime($p))?>
            </td>
                <td>
            <?php echo date("Y-m-d H:i:s",filemtime($p))?>
            </td>
                <td>
            <?php echo date("Y-m-d H:i:s",fileatime($p))?>
            </td>
                <a href="index.php?act=editContent&filename=<?php echo $p?>"><img
                    class="small" src="images/edit.png" alt="" title="修改" /></a>|
                <a href="index.php?act=renameFile&filename=<?php echo $p;?>"><img
                    class="small" src="images/rename.png" alt="" title="重命名" /></a>|
                <a href=""><img class="small" src="images/copy.png" alt=""
                    title="復(fù)制" /></a>|
                <a href="">![](images/cut.png)</a>|
                <a href="" onclick="return delFile('<?php echo $p;?>')"><img
                    class="small" src="images/delete.png" alt="" title="刪除" /></a>|
                <a href="index.php?act=downFile&filename=<?php echo $p?>"><img
                    class="small" src="images/download.png" alt="" title="下載" /></a>
                </td>

            </tr>
            
            
        <?php
                $i++;
            }
        }
        ?>
    </table>
    </form>
</body>
</html>

dir.func.php

<?php
/**
 * 遍歷目錄函數(shù) 最外層
 * @param string $path
 * @return array
 */
function readDirectory($path) {
    $handle = opendir ( $path );
    
    // !== 防止文件名為0 被忽略
    while ( ($item = readdir ( $handle )) !== false ) {
        if ($item != "." && $item != "..") {
            if (is_file ( $path . "/" . $item )) {
                $arr ['file'] [] = $item;
            }
            if (is_dir ( $path . "/" . $item )) {
                $arr ['dir'] [] = $item;
            }
        }
    }
    closedir ( $handle );
    return $arr;
}

// $path = "file";
// print_r ( readDirectory ( $path ) );

/**
 * 得到文件夾大小
 * @param unknown $path
 * @return Ambigous <unknown, number>
 */
function dirSize($path){
    $sum=0;
    global $sum;
    $handle=opendir($path);
    while (($item=readdir($handle))!==false){
        if($item!="."&&$item!=".."){
        if(is_file($path."/".$item)){
            $sum+=filesize($path."/".$item);
        }
        if(is_dir($path."/".$item)){
            $func=__FUNCTION__;
            $func($path."/".$item);//遞歸
        }
    }   
    }
    closedir($handle);
    return $sum;
}
?>
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市插掂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖眷柔,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異原朝,居然都是意外死亡驯嘱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門喳坠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鞠评,“玉大人,你說我怎么就攤上這事壕鹉⌒怀海” “怎么了煌贴?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锥忿。 經(jīng)常有香客問我牛郑,道長,這世上最難降的妖魔是什么敬鬓? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任淹朋,我火速辦了婚禮,結(jié)果婚禮上钉答,老公的妹妹穿的比我還像新娘础芍。我一直安慰自己,他們只是感情好数尿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布仑性。 她就那樣靜靜地躺著,像睡著了一般右蹦。 火紅的嫁衣襯著肌膚如雪诊杆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天何陆,我揣著相機(jī)與錄音晨汹,去河邊找鬼。 笑死贷盲,一個(gè)胖子當(dāng)著我的面吹牛淘这,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播巩剖,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼铝穷,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了佳魔?” 一聲冷哼從身側(cè)響起氧骤,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吃引,沒想到半個(gè)月后筹陵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镊尺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年朦佩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庐氮。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡语稠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仙畦,我是刑警寧澤输涕,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站慨畸,受9級(jí)特大地震影響莱坎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寸士,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一檐什、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弱卡,春花似錦乃正、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凡人,卻和暖如春名党,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背划栓。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留条获,地道東北人忠荞。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像帅掘,于是被迫代替她去往敵國和親委煤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容