php實(shí)現(xiàn)文件管理與基礎(chǔ)功能操作
文件的基本操作
先來看一下PHP文件基礎(chǔ)操作,請看強(qiáng)大注釋
<body>
<?php
var_dump(filetype("./img/11.png"));
//判斷返回得是文件還是目錄,返回sile為文件,dir為目錄(文件夾)
var_dump(is_dir("./img/11.png"));
//判斷給的文件是不是一個(gè)目錄,目錄為ture,文件為false
var_dump(is_file("./img"));
//判斷是否為文件,同上
var_dump(date("Y-m-d H:i:s",fileatime("./img/11.png")));
//上次訪問時(shí)間
var_dump(date("Y-m-d H:i:s",filectime("./img/11.png")));
//創(chuàng)建時(shí)間
var_dump(date("Y-m-d H:i:s",filemtime("./img/11.png")));
//修改時(shí)間
var_dump(filesize("./img/11.png"));
//獲取文件大小
var_dump(file_exists("/QQPCMgr/www/wenjian/img/22.png"));
//在php里面根/則是磁盤
echo $_SERVER['DOCUMENT_ROOT'];
//獲取到服務(wù)器根路徑
echo basename("/QQPCMgr/www/wenjian/img/22.png");
//返回22.png帶后綴的文件名
echo basename("/QQPCMgr/www/wenjian/img/22.png",".png");
//扔上后綴之后只顯示文件名(獲取文件名)
echo dirname("/QQPCMgr/www/wenjian/img/22.png");
//返回的是不包含文件名的路徑(獲取文件名以上的)
var_dump(pathinfo("/QQPCMgr/www/wenjian/img/22.png"));
//這個(gè)獲取的很全面,都能獲取到
echo realpath("./img/11.png");
//真實(shí)路徑:可以把相對路徑轉(zhuǎn)換為絕對路徑
var_dump(glob("./ce/*"));
//取到這個(gè)文件夾里所有的文件,加后綴為條件
?>
<!--<img src="/wenjian/img/11.png" />-->
<!--在網(wǎng)頁里根/代表的是www目錄-->
</body>
文件整體操作:
<?php
//touch("./11.txt");
//創(chuàng)建文件
//copy("11.txt","./ce/11.txt");
//復(fù)制文件
//unlink("./11.txt");
//刪除文件
//echo file_get_contents("./ce/11.txt");本地
//echo file_get_contents("http://www.baidu.com");遠(yuǎn)程
//讀取文件所有內(nèi)容
//file_put_contents("./11.txt","Myshao");
//往文件里面存儲(chǔ)內(nèi)容
//readfile("./11.txt");
//讀取并輸出
//$arr = file("./shouye.php");
//var_dump($arr);
//讀取文件內(nèi)所有內(nèi)容,并扔到數(shù)組顯示
//$ff = fopen("./11.txt","a");
//打開文件資源,詳情見注1;
//echo fgetc($ff);
//讀取一個(gè)字符
//echo fgets($ff);
//讀取一行字符
//echo fread($ff,2);
//規(guī)定讀多長
//fwrite($ff,"shao");
//寫入內(nèi)容
注1:打開和讀取文件
php使用fopen()函數(shù)的方式,語法結(jié)構(gòu)如下
Resource fopen (string $filename,string $mode) Filename是目標(biāo)文件名,打開本地文件也可以打開遠(yuǎn)程文件,打開遠(yuǎn)程文件需要采用http://...形式,假如目標(biāo)文件在
ftp服務(wù)器上,則采用形式ftp://...。
參數(shù)mode是目標(biāo)文件打開形式,參數(shù)$mode是可以接收的模式。
文件打開方式表:

目錄資源的打開與關(guān)閉:但凡有開就有關(guān),否則會(huì)影響到后面的刪除等操作;
<?php
$fname = "./ce/gf";
$d = opendir($fname);
//打開文件資源
while ($url = readdir($d))
{
echo $fname."/".$url."<br/>";
// 僅讀取文件名,把路徑拼上=完整路徑
}
var_dump(glob("./*"));
closedir($d);
//關(guān)資源
以上就是一些基礎(chǔ)的語句了,來做點(diǎn)練習(xí):
例:返回一個(gè)文件夾下的所有文件數(shù)量;
如果想要計(jì)算出ajax目錄下有多少的文件,可以用下面封裝的方法shu()來遍歷目錄,可以計(jì)算出ce目錄下其他的文件夾里面的文件的總和,
<?php
function shu($url)
{
$sl = 0;
$arr = glob($url);
//循環(huán)遍歷
foreach($arr as $v)
{
//判斷是不是一個(gè)文件
if(is_file($v))
{
//如果是一個(gè)文件+1
$sl++;
}
else
{
$sl +=shu($v."/*");
}
}
return $sl;
}
echo shu("./ce/*");
//最后給方法一個(gè)路徑進(jìn)行查找
?>
看一下輸出:

再來一個(gè)!
例:刪除文件
<?php
$fname = "./ce/gf";
$d = opendir($fname);
//打開文件資源
while ($url = readdir($d))
{
echo $fname."/".$url."<br/>";
// 僅讀取文件名,把路徑拼上=完整路徑
}
var_dump(glob("./*"));
closedir($d);
//關(guān)資源
//刪除文件夾(非空文件夾)
function shan($url)
{
// 清空文件夾
$d = opendir($url);
// 打開
while ($u = readdir($d))//$u現(xiàn)在是文件名
{
// 排除...
if($u!="." && $u!="..")
{
$fname = $url . "/" . $u;
//完整帶路徑的文件名
if (is_file($fname))//如果是一個(gè)文件
{
unlink($fname);
} else //如果是一個(gè)文件夾
{
shan($fname);
}
}
}
closedir($d);
//關(guān)閉
rmdir($url);
}
shan("./122");
?>
這樣122目錄里面所有的東西,不管是文件夾還是文件都會(huì)被刪除;
實(shí)現(xiàn)文件管理功能
1.先把查看文件的功能做出來,讓他把所有的文件與文件夾啊顯示出來;
<body>
<?php
//定義文件目錄
$fname = "./ce";
//便利目錄下的所有文件顯示
$arr = glob($fname."/*");
foreach ($arr as $v)
{
//從完整路徑中取文件名
$name = basename($v);
echo "<div class='item' url='{$v}'>{$name}</div>";
}
?>
</body>
圖:

接下來給文件夾特殊顯示一下把:
輸出之前需要判斷,判斷是不是一個(gè)文件夾:
//從完整路徑中取文件名
$name = basename($v);
if(is_dir($v)){
echo "<div class='item dir' url='{$v}'>{$name}</div>";
}
else {
echo "<div class='item' url='{$v}'>{$name}</div>";
}
如果是個(gè)文件夾,給他背景顏色改變一下就好啦
圖:

2.給文件夾添加雙擊事件:
雙擊實(shí)現(xiàn)進(jìn)入這個(gè)目錄;
js代碼:
<script>
$(".dir").dblclick(function(){
var url = $(this).attr("url");
$.ajax({
url:"chuli.php",
data:{url:url},
type:"POST",
dataType:"TEXT",
success:function(data)
{
window.location.href="wenwen.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
}
});
})
</script>
處理頁面:
<?php session_start(); $url = $_POST["url"]; $_SESSION["fname"] = $url;
這樣就可以實(shí)現(xiàn)雙擊進(jìn)入此文件夾:

3.返回上一級,找到上一級目錄,寫個(gè)div
$pname = dirname($fname);
echo "<div id='shang' url='{$pname}'>返回上一級</div>";
圖:

寫雙擊事件:
<script>
$("#shang").dblclick(function(){
var url = $(this).attr("url");
$.ajax({
url:"chuli.php",
data:{url:url},
type:"POST",
dataType:"TEXT",
success:function(data)
{
window.location.href="wenwen.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
}
});
})
</script>
返回到文件目錄后使其隱藏:
//上一級的目錄
$pname = dirname($fname);
if(realpath($fname)=="F:\\QQPCMgr\\WWW\\wenjian")
{}
else {
echo "<div id='shang' url='{$pname}'>返回上一級</div>";
}
這樣的話當(dāng)我返回到wenjian目錄的時(shí)候,使其隱藏:

4.刪除功能
在文件div里面加刪除按鈕:
echo "<div class='item' url='{$v}'>{$name}
<input type='button' value='刪除' url='{$v}' class='sc'/>
</div>";

來寫按鈕的點(diǎn)擊事件:
js代碼:
$(".sc").click(function(){
//確認(rèn)刪除提示
var av = confirm("確定要?jiǎng)h除");
if(av){
var url = $(this).attr("url");
$.ajax({
url: "shan.php",
data: {url: url},
type: "POST",
dataType: "TEXT",
success: function (data) {
window.location.href = "wenwen.php";
}
});
}
})
刪除的處理頁面:
<?php $url = $_POST["url"]; unlink($url);
這樣完成后,當(dāng)我點(diǎn)擊刪除:

再點(diǎn)擊確定,即可刪除
總代碼:
管理查看頁面:
<!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>無標(biāo)題文檔</title>
<script src="jquery-1.11.2.min.js"></script>
<style>
.item{
width: 500px; height: 30px; border: 1px solid slateblue;
background-color: aquamarine;
line-height: 30px;
}
.dir{
background-color: chocolate; color: aliceblue;
}
#shang{
width: 500px; height: 30px; border: 1px solid slateblue;
background-color: brown;color: aliceblue;
line-height: 30px;
}
</style>
</head>
<body>
<?php
session_start();
//定義文件目錄
$fname = "./ce";
if(!empty($_SESSION["fname"]))
{
//如果session里面的不為空
$fname = $_SESSION["fname"];
}
//上一級的目錄
$pname = dirname($fname);
if(realpath($fname)=="F:\\QQPCMgr\\WWW\\wenjian")
{}
else {
echo "<div id='shang' url='{$pname}'>返回上一級</div>";
}
//便利目錄下的所有文件顯示
$arr = glob($fname."/*");
foreach ($arr as $v)
{
//從完整路徑中取文件名
$name = basename($v);
if(is_dir($v)){
echo "<div class='item dir' url='{$v}'>{$name}</div>";
}
else {
echo "<div class='item' url='{$v}'>{$name}
<input type='button' value='刪除' url='{$v}' class='sc'/>
</div>";
}
}
?>
<script>
$(".dir").dblclick(function(){
var url = $(this).attr("url");
$.ajax({
url:"chuli.php",
data:{url:url},
type:"POST",
dataType:"TEXT",
success:function(data)
{
window.location.href="wenwen.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
}
});
})
$("#shang").dblclick(function(){
var url = $(this).attr("url");
$.ajax({
url:"chuli.php",
data:{url:url},
type:"POST",
dataType:"TEXT",
success:function(data)
{
window.location.href="wenwen.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
}
});
})
$(".sc").click(function(){
//確認(rèn)刪除提示
var av = confirm("確定要?jiǎng)h除");
if(av){
var url = $(this).attr("url");
$.ajax({
url: "shan.php",
data: {url: url},
type: "POST",
dataType: "TEXT",
success: function (data) {
window.location.href = "wenwen.php";
}
});
}
})
</script>
</body>
</html>
處理:
<?php session_start(); $url = $_POST["url"]; $_SESSION["fname"] = $url;
刪除:
<?php $url = $_POST["url"]; unlink($url);
以上所述是小編給大家介紹的php實(shí)現(xiàn)文件管理與基礎(chǔ)功能操作,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
PHP SPL標(biāo)準(zhǔn)庫之?dāng)?shù)據(jù)結(jié)構(gòu)棧(SplStack)介紹
這篇文章主要介紹了PHP SPL標(biāo)準(zhǔn)庫之?dāng)?shù)據(jù)結(jié)構(gòu)棧(SplStack)介紹,棧(Stack)是一種特殊的線性表,因?yàn)樗荒茉诰€性表的一端進(jìn)行插入或刪除元素(即進(jìn)棧和出棧),需要的朋友可以參考下2015-05-05
laravel實(shí)現(xiàn)簡單用戶權(quán)限的示例代碼
這篇文章主要介紹了laravel實(shí)現(xiàn)簡單用戶權(quán)限的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
PHP 實(shí)現(xiàn)人民幣小寫轉(zhuǎn)換成大寫的方法及大小寫轉(zhuǎn)換函數(shù)
這篇文章主要介紹了PHP 實(shí)現(xiàn)人民幣小寫轉(zhuǎn)換成大寫的方法,大小寫轉(zhuǎn)換函數(shù)的使用方法介紹,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11
解決laravel中日志權(quán)限莫名變成了root的問題
今天小編就為大家分享一篇解決laravel中日志權(quán)限莫名變成了root的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10

