iT邦幫忙

2

[PHP]資料夾建立更名與刪除~檔案上傳part3

建立資料夾

mkdir函數用於建立資料夾,其格式為mkdir(資料夾路徑,權限)

權限以0開頭,後面接的數字是讀取、寫入、執行的權限。

(注意:Windows環境無法套用存取權限設定,只能依照預設值0777;
Linux環境可依照需求建立各種不同權限的資料夾)

範例程式碼:

	<?php
	if(mkdir("./dirname", 0700))
		echo "成功建立資料夾"."<br>";
	else
		echo "建立資料夾失敗"."<br>";
	?>

輸出結果:
http://ithelp.ithome.com.tw/upload/images/20170827/20106434dn2YBwFSJh.png

此程式碼執行成功後,會在檔案的同一層建立一名為dirname的空資料夾

(補充)Linux環境內權限設定

可分別針對檔案擁有人、檔案擁有群組、其他人分別規劃讀、寫、執行三種權限,分別用數字4、2、1表示:

檔案擁有人 { 讀[4] + 寫[2] + 執行[1] }

檔案擁有群組 { 讀[4] + 寫[2] + 執行[1] }

其他人 { 讀[4] + 寫[2] + 執行[1] }

例如要讓目錄開放給檔案擁有人與檔案擁有群組可以讀寫執行,而其他人只可以讀,計算方式為:
檔案擁有人=>可以讀寫執行:4+2+1=7
檔案擁有群組=>可以讀寫執行:4+2+1=7
其他人只可以讀=>4+0+0=4
權限設定=>774

刪除資料夾

**rmdir()**函數是刪除資料夾的指令,使用時必須注意要被刪除的資料夾是否含有資料:
當資料夾內沒有資料時 => 可順利刪除資料夾
當資料夾內有資料時 => 無法刪除資料夾

範例程式碼:

<?php
	if(rmdir("./dirname"))
		echo "成功刪除資料夾"."<br>";
	else
		echo "刪除資料夾失敗"."<br>";

	if(is_dir("./dirname"))
		rmdir();
	else
		echo "資料夾不存在"."<br>";
?>

刪除指定檔案

unlink()函數可刪除指定的檔案

範例程式碼:

<?php
	if(unlink("./dirname/file2.png"))
		echo "成功刪除檔案"."<br>";
	else
		echo "刪除檔案失敗"."<br>";
?>

若要刪除的資料有多個,可以用glob()函數以陣列方式傳回指定文件或目錄資訊在進行刪除

先來看glob()函數是如何運用的:

/dirname目錄底下有不同類型的檔案

http://ithelp.ithome.com.tw/upload/images/20170828/201064343M62g3c5Jr.png

運用glob()函數指定查看目錄內.txt的檔案清單

範例程式:

	<?php 
		foreach (glob("./dirname/*.jpg") as $filename)
		echo basename($filename)." size ".filesize($filename)."<br>";
	?>

輸出結果:
http://ithelp.ithome.com.tw/upload/images/20170828/20106434mGVXyDiHY2.png

glob()函數內可放兩個參數,第一個參數為必要參數,是「指定搜尋的樣式」,第二個參數為非必要參數,參數目的是「指定詳細的屬性樣式」

第二個參數可用屬性樣式
GLOB_MARK 返回每一個搜尋的資料夾前面加上斜線「/」
GLOB_NOSORT 返回資料夾內檔案不做排序
GLOB_BRACE 使{a,b,c} 與'a','b'或'c'能互相搭配
GLOB_ERR 出現錯誤時停止執行

若要同時顯示多個檔案或多種檔案類型,glob()函數可快速地幫我們完成:
範例程式:

<?php
		$multipath = "./dirname/";
		foreach (glob($multipath. "{*.png,*.txt}",GLOB_BRACE) as $filename) 
			//利用glob()函數的GLOB_BRACE參數查詢.png,*.txt檔案,並使用foreach將回應的檔案依序儲存於變數$filename
		{
			echo basename($filename)."<br>"."size:".filesize($filename)."<br><br>";
		}
		echo "<hr>";
		foreach (glob($multipath. "{img1,img2}.jpg",GLOB_BRACE) as $filename) 
			//利用glob()函數的GLOB_BRACE參數查詢副檔名為「jpg」而主檔名為img1,img2的檔案,並使用foreach將回應的檔案依序儲存於變數$filename
		{
			echo basename($filename)."<br>"."size:".filesize($filename)."<br><br>";
		}

?>

輸出結果:
http://ithelp.ithome.com.tw/upload/images/20170828/20106434WGBT6uqsot.png

也可以運用glob()函數刪除目錄中所有不同類型的檔案,並印出結果:
範例程式碼:

<?php
		$dir="./dirname/";
		$files = glob($dir.'*');
		foreach ($files as $file) 
		if(@unlink($file))
		{
			echo "刪除檔案" .$file."成功<br>";
		}else{
			echo "刪除檔案" .$file."失敗<br>";
		}
		if(@rmdir($dir)) echo "刪除資料夾",$dir,"成功";
		else
			echo "刪除資料夾",$dir,"失敗";
		
?>

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言