7.
PHP檔案操作(上)
一、讀取目錄內容
define("_UPLOAD_DIR","目錄的絕對路徑");
define("_UPLOAD_URL","目錄的網址");
if($dh = opendir(_UPLOAD_DIR)){
while(($file = readdir($dh)) !== false){
if($file==".")continue;
$type=filetype(_UPLOAD_DIR."/".$file);
if($type=="dir"){
$dir_arr[]=$file;
}else{
$file_arr[]=$file;
}
}
closedir($dh);
//秀出內容
} |
//開啟目錄
//用迴圈讀取目錄中的檔案或目錄
//遇到「.」則跳過
//取得檔案類型
//若為目錄($type=dir)
//加入目錄陣列
//否則($type=file)
//加入檔案陣列
//關閉目錄
|
二、秀出內容(並加入圖示)
1.把TodunVote1.0.zip解壓縮,並加入css檔。
$main="
<link rel='stylesheet' type='text/css' href='iconize_l.css' />
<link rel='stylesheet' type='text/css' href='tinytable.css' />
<table>
<tr><th>名稱</th><th>大小</th><th>類型< /th></tr>";
foreach($dir_arr as $sub_dir){
$dirSize=formatBytes(dirSize(_UPLOAD_DIR."/".$sub_dir));
$main.="<tr>
<td><a href='index.php?to="._UPLOAD_DIR."/".$sub_dir."'>$sub_dir</a></td>
<td align='right'>$dirSize</td>
<td>目錄</td></tr>";
}
foreach($file_arr as $file){
$filesize=formatBytes(filesize(_UPLOAD_DIR."/".$file));
$main.="<tr>
<td><a href='"._UPLOAD_URL."/".$file."'>$file</a></td>
<td align='right'>$filesize</td>
<td>檔案</td></tr>";
}
$main.="</table>"; |
//主內容變數
//引入圖示CSS
//引入表格CSS
//表格
//表格標題
//用迴圈讀出目錄名稱
//計算目錄大小
//產生一列
//顯示目錄名稱
//顯示目錄大小
//顯示目錄類型
//用迴圈讀出檔案名稱
//計算檔案大小
//產生一列
//顯示檔案名稱
//顯示檔案大小
//顯示檔案類型
|
三、切換目錄
$base_dir="D:/httpd/07/uploads";
$base_url="http://localhost/07/uploads";
if(!empty($_GET['to'])){
$dir=$_GET['to'];
}else{
$dir=$base_dir;
}
$dir=realpath($dir);
$dir=str_replace("\\","/",$dir);
define("_UPLOAD_DIR",$dir);
define("_UPLOAD_URL",str_replace($base_dir,$base_url,$dir)); |
//重新定義目錄的絕對路徑
//重新定義目錄的網址
//若有傳入 to 變數
//指定新目錄路徑
//否則
// 用預設路徑
//取得真實路徑
//把win的路徑改為 /
//把新路徑定義到目錄絕對路徑
//把新網址定 義到目錄網址
|
四、限制目錄範圍
$len=strlen($base_dir);
if(substr($dir,0,$len)!=$base_dir)
die("「{$dir}」為不合法路徑"); |
//計算原有目錄絕對路徑長度
//看目前目錄之路徑前面是否和$base_dir相同
//若不同,則擋下。
|