亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

簡單的web文件管理器

Original 2019-05-09 09:37:44 372
abstrakt:首先將文件的創(chuàng)建、刪除、剪切、復(fù)制、重命名等相關(guān)功能的函數(shù)封裝到一個方法庫中,并將其命名為function.php。再創(chuàng)一配置文件的庫config.php、操作配置文件operation.php以及公共提示信息的庫common.php,最后在首頁的index.php中引入相關(guān)的庫,在此頁面中,通過html語句以及php語句的結(jié)合使用,使頁面中能達(dá)到相關(guān)操作。函數(shù)庫function.php<?

首先將文件的創(chuàng)建、刪除、剪切、復(fù)制、重命名等相關(guān)功能的函數(shù)封裝到一個方法庫中,并將其命名為function.php。再創(chuàng)一配置文件的庫config.php、操作配置文件operation.php以及公共提示信息的庫common.php,最后在首頁的index.php中引入相關(guān)的庫,在此頁面中,通過html語句以及php語句的結(jié)合使用,使頁面中能達(dá)到相關(guān)操作。

函數(shù)庫function.php

<?php
/**
 * 封裝文件操作方法庫
 */

/**
 * 文件創(chuàng)建操作
 * @param $filename //需要創(chuàng)建的文件名
 * @return string       提示信息
 */
function create_file($filename)
{
    // 檢查文件是否存在,不存在則創(chuàng)建
    if (file_exists($filename)) {
        return '文件已存在!';
    }
    // 檢查目錄是否存在,不存在則創(chuàng)建
    if (!file_exists(dirname($filename))) {
        mkdir(dirname($filename), 0777, true);
    }
    // 創(chuàng)建文件并判斷
    if (touch($filename)) {
        return '文件創(chuàng)建成功!';
    }
    return '文件創(chuàng)建失?。?#39;;
}

//var_dump(create_file('text6.txt'));
//var_dump(create_file('file1/text.txt'));

/**
 * 文件刪除操作
 * @param $filename // 需要刪除的文件名
 * @return string       提示信息
 */
function del_file($filename)
{
    // 查詢文件是否存在并查詢是否可寫
    if (!file_exists($filename) && !is_writable($filename)) {
        return '此文件不可刪除!';
    }
    // 刪除文件并判斷
    if (unlink($filename)) {
        return '文件刪除成功!';
    }
    return '文件刪除失敗!';
}

//echo del_file('file1/text.txt');

/**
 * 文件復(fù)制操作
 * @param $filename // 需要復(fù)制的文件名
 * @param $dest // 目標(biāo)目錄或文件夾
 * @return string       // 提示信息
 */
function copy_file($filename, $dest)
{
    // 查詢文件是否存在并查詢是否可寫
    if (!file_exists($filename) && !is_writable($filename)) {
        return '此文件不可復(fù)制!';
    }
    // 查詢目錄是否存
    if (!is_dir($dest)) {
        mkdir($dest, 0777, true);
    }
    // 拼接要拷貝到的目錄和文件名
    $destname = $dest . "/" . basename($filename);
    // 查詢目標(biāo)目錄是否有該文件
    if (file_exists($destname)) {
        return '該目錄下此文件已經(jīng)存在!';
    }
    // 查詢并驗證
    if (copy($filename, $destname)) {
        return '文件復(fù)制成功!';
    }
    return '文件復(fù)制失??!';
}

//echo copy_file('text.txt','file1');

/**
 * 文件重命名操作
 * @param $oldname //  需要重命名的文件名
 * @param $newname // 目標(biāo)文件名
 * @return string   // 提示信息
 */
function rename_file($oldname, $newname)
{
    // 查詢文件是否存在并查詢是否可寫
    if (!file_exists($oldname) && !is_writable($oldname)) {
        return '此文件不可重命名!';
    }
    // 獲取當(dāng)前文件的目錄
    $path = dirname($oldname);
    // 拼接重命名之后的路徑以及文件名
    $destname = $path . "/" . $newname;
    // 判斷重命名的名稱是否存在
    if (file_exists($destname)) {
        return '此文件名已存在!';
    }
    // 重命名操作并驗證
    if (rename($oldname, $newname)) {
        return '文件重命名成功!';
    }
    return '文件重命名失??!';
}

//echo rename_file('text.txt','text.txt');

/**
 * 文件剪切操作
 * @param $filename // 需要剪切的文件
 * @param $dest // 目標(biāo)目錄
 * @return string   // 提示信息
 */
function cut_file($filename, $dest)
{
    // 判斷源文件是否為正常文件
    if (!is_file($filename)) {
        return "該文件不可剪切";
    }
    // 判斷目標(biāo)目錄是否成功
    if (!is_dir($dest)) {
        mkdir($dest, 0777, true);
    }
    // 拼接文件路徑
    $destName = $dest . "/" . basename($filename);
    // 檢查目標(biāo)目錄是否存在源文件同名文件
    if (is_file($destName)) {
        return "該文件夾下已存在此文件!";
    }
    // 剪切操作并驗證
    if (rename($filename, $destName)) {
        return "文件剪切成功!";
    }
    return "文件剪切失敗!";

}

//echo cut_file('text1.txt','file1');

/**
 * 文件信息查詢操作
 * @param $filename // 需要查詢的文件名
 * @return array|string // 文件信息
 */
function get_file_info($filename)
{
    // 判斷文件是否為正常文件并判斷是否為可讀文件
    if (!is_file($filename) && !is_readable($filename)) {
        return "該文件不可讀取數(shù)據(jù)!";
    }
    return [
        // 文件的類型查詢
        'type' => filetype($filename),
        // 文件的創(chuàng)建時間查詢
        'ctime' => date("Y-m-d H:i:s", filectime($filename)),
        // 文件最后的修改時間查詢
        'mtime' => date("Y-m-d H:i:s", filemtime($filename)),
        // 文件最后的訪問時間查詢
        'atime' => date("Y-m-d H:i:s", fileatime($filename)),
        // 文件字節(jié)大小查詢
        'size' => trans_byte(filesize($filename))
    ];
}

//var_dump(get_file_info('text1.txt'));

/**
 * 字節(jié)轉(zhuǎn)換操作
 * @param $byte // 字節(jié)大小
 * @param int $precision // 保留小數(shù)位
 * @return string
 */
function trans_byte($byte, $precision = 2)
{
    $KB = 1024;
    $MB = 1024 * $KB;
    $GB = 1024 * $MB;
    $TB = 1024 * $GB;
    if ($byte < $KB) {
        return $byte . 'B';
    } elseif ($byte < $MB) {
        return round($byte / $KB, $precision) . 'KB';
    } elseif ($byte < $GB) {
        return round($byte / $MB, $precision) . 'MB';
    } elseif ($byte < $TB) {
        return round($byte / $GB, $precision) . 'GB';
    } else {
        return round($byte / $TB, $precision) . 'TB';
    }

}

/**
 * 文件內(nèi)容讀取操作
 * @param $filename // 需要讀取的文件名
 * @return bool|string  // 文件內(nèi)容|提示信息
 */
function read_file($filename)
{
    // 檢查文件是否為正常文件并檢查文件是否可讀
    if (is_file($filename) && is_readable($filename)) {
        // 讀取文件內(nèi)容
        return file_get_contents($filename);
    }
    return "該文件無法讀取!";

}

//echo read_file('text1.txt');

/**
 * 文件內(nèi)容讀取操作(數(shù)組形式返回)
 * @param $filename // 需要查詢內(nèi)容的文件名
 * @param bool $skip_empty_lines // 是否跳過空行
 * @return array|bool|string    文件內(nèi)容|提示信息
 */
function read_file_array($filename, $skip_empty_lines = false)
{
    // 檢查文件是否為正常文件并檢查文件是否可讀
    if (is_file($filename) && is_readable($filename)) {
        // 判斷是否跳過空行
        if ($skip_empty_lines == true) {
            // 查詢文件內(nèi)容
            return file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        } else {
            // 查詢文件內(nèi)容
            return file($filename);
        }
    }
    return "該文件無法讀??!";
}

//var_dump(read_file_array('text1.txt'));

/**
 * 文件寫入操作
 * @param $filename // 目標(biāo)文件
 * @param $data // 寫入的數(shù)據(jù)
 * @param bool $clear // 是否清空目標(biāo)文件內(nèi)容
 * @return string       提示信息
 */
function write_file($filename, $data, $clear = false)
{
    // 獲取目錄目錄
    $dirname = dirname($filename);
    // 判斷目錄目錄是否存在
    if (!file_exists($dirname)) {
        mkdir($dirname, 0777, true);
    }
    // 判斷數(shù)據(jù)是否為數(shù)組或?qū)ο?    if (is_array($data) || is_object($data)) {
        $data = serialize($data);
    }
    // 判斷是否清空源文件內(nèi)容
    if ($clear == false) {
        // 判斷目標(biāo)文件是否為正常文件并是否可讀
        if (is_file($filename) && is_readable($filename)) {
            // 判斷目標(biāo)文件是否有內(nèi)容
            if (filesize($filename) > 0) {
                // 獲取源文件內(nèi)容
                $srcData = file_get_contents($filename);
                // 拼接源文件內(nèi)容
                $data = $srcData . $data;
            }
        }
    }
    // 寫入內(nèi)容并判斷
    if (file_put_contents($filename, $data)) {
        return "文件寫入成功!";
    }
    return "文件寫入失??!";
}

//$data = [
//    'name' => '滅絕',
//    'age' => 18
//];
//echo write_file('text1.txt',$data);

/**
 * 文件下載操作
 * @param $filename // 需要下載的文件名
 */
function dow_file($filename)
{
    // 告訴瀏覽器返回文件的大小
    header('Accept-Length:' . filesize($filename));
    // 告訴瀏覽器文件做為附件處理,并告訴瀏覽器下載完的文件名
    header('Content-Disposition:attachment;filename=' . basename($filename));
    // 輸出文件
    readfile($filename);
    exit();
}

//dow_file('123.jpg');

/**
 * 單文件上傳操作
 * @param $fileInfo // 上傳的文件信息
 * @param string $uploadPath // 上傳的指定目錄
 * @param array $allowExt // 上傳的文件類型
 * @param int $maxSize // 上傳文件最大值
 * @return string       提示信息
 */
function upload_file($fileInfo, $uploadPath = './upload', $allowExt = ['png', 'jpg', 'jpeg', 'gif', 'txt', 'html'], $maxSize = 1000000)
{
    // 判斷上傳錯誤號
    if ($fileInfo['error'] === 0) {
        // 獲取文件后綴
        $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
        // 判斷文件類型
        if (!in_array($ext, $allowExt)) {
            return '非法文件類型!';
        }
        // 判斷文件大小
        if ($fileInfo['size'] > $maxSize) {
            return '超出文件上傳最大值!';
        }
        // 判斷文件上傳方式
        if (!is_uploaded_file($fileInfo['tmp_name'])) {
            return '非法上傳!';
        }
        // 判斷需要移動到的目錄是否存在
        if (!is_dir($uploadPath)) {
            mkdir($uploadPath, 0777, true);
        }
        // 生成唯一的文件名 uniqid 生成唯一id  microtime 返回當(dāng)前unix時間戳中的微秒
        $uniName = md5(uniqid(microtime(true), true)) . "." . $ext;
        // 拼接路徑以及文件名
        $dest = $uploadPath . "/" . $uniName;
        // 將文件移動到指定目錄
        if (!move_uploaded_file($fileInfo['tmp_name'], $dest)) {
            return '文件上傳失??!';
        }
        return '文件上傳成功!';
    } else {
        switch ($fileInfo['error']) {
            case 1:
                $res = '上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值!';
                break;
            case 2:
                $res = '上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值!';
                break;
            case 3:
                $res = '文件只有部分被上傳!';
                break;
            case 4:
                $res = '沒有文件被上傳!';
                break;
            case 6:
            case 7:
                $res = '系統(tǒng)錯誤!';
                break;
        }
        return $res;
    }
}

/*———————————————————————————————————————————————————目錄操作方法———————————————————————————————————————————*/

/**
 * 目錄創(chuàng)建操作
 * @param $dirName // 需要創(chuàng)建的目錄名稱
 * @return string   提示信息
 */
function create_folder($dirName)
{
    // 判斷是否存在相同文件或目錄
    if (file_exists($dirName)) {
        return "存在相同文件!";
    }
    // 創(chuàng)建目錄并判斷
    if (mkdir($dirName, 0777, true)) {
        return "目錄創(chuàng)建成功!";
    }
    return "目錄創(chuàng)建失??!";
}

//echo create_folder('css');

/**
 * 目錄刪除操作
 * @param $path // 需要刪除的目錄
 * @return string   提示信息
 */
function del_folder($path)
{
    // 打開目錄
    $dir = opendir($path);
    // 循環(huán)讀取目錄中的內(nèi)容
    while ($item = readdir($dir)) {
        // 判斷.和.. 特別文件或目錄
        if ($item != "." && $item != "..") {
            // 判斷是否為真正的文件
            if (is_file($path . "/" . $item)) {
                // 刪除文件操作
                unlink($path . "/" . $item);
            }
            // 判斷是否為真正的目錄
            if (is_dir($path . "/" . $item)) {
                // 回調(diào)方法
                $func = __FUNCTION__;
                // 使用方法
                $func($path . "/" . $item);
            }
        }
    }
    // 關(guān)閉目錄
    closedir($dir);
    // 刪除目錄
    rmdir($path);
    return "目錄刪除成功!";
}

//echo del_folder('file1');
/**
 * 目錄復(fù)制操作
 * @param $src // 源目錄
 * @param $dest // 目標(biāo)目錄
 * @return string 提示信息
 */
function copy_dir($src, $dest)
{
    // 判斷需要復(fù)制的目錄下是否存在相同的目錄或文件
    if (!file_exists($dest)) {
        mkdir($dest, 0777, true);
    } else {
        return "該目錄下存在相同文件!";
    }
    // 打開目錄
    $dir = opendir($src);
    // 循環(huán)讀取目錄中的內(nèi)容
    while ($item = readdir($dir)) {
        // 判斷.和.. 特別文件或目錄
        if ($item != "." && $item != "..") {
            // 判斷是否為真正的文件
            if (is_file($src . "/" . $item)) {
                // 復(fù)制操作
                copy($src . "/" . $item, $dest . "/" . $item);
            }
            // 判斷是否為真正的目錄
            if (is_dir($src . "/" . $item)) {
                // 回調(diào)方法
                $func = __FUNCTION__;
                // 使用方法
                $func($src . "/" . $item, $dest . "/" . $item);
            }
        }
    }
    // 關(guān)閉目錄
    closedir($dir);
    return "目錄復(fù)制成功!";
}
//echo copy_dir('upload','css/upload');

/**
 * 目錄重命名操作
 * @param $oldName // 源目錄名
 * @param $newName // 新目錄名
 * @return string   提示信息
 */
function rename_dir($oldName, $newName)
{
    if (!file_exists($newName)) {
        if (rename($oldName, $newName)) {
            return "修改成功!";
        } else {
            return "修改失??!";
        }
    }
    return "已經(jīng)存在該文件或目錄!";
}

//echo rename_dir('css','js');

/**
 * 目錄剪切操作
 * @param $src // 源目錄
 * @param $dest // 目標(biāo)目錄
 * @return string   提示信息
 */
function cut_dir($src, $dest)
{
    // 判斷是否存在目標(biāo)目錄
    if (is_dir($dest)) {
        // 拼接目標(biāo)理解
        $dest = $dest . "/" . basename($src);
        // 判斷目標(biāo)目錄下是否存在相同目錄
        if (!file_exists($dest)) {
            // 判斷并剪切操作
            if (rename($src, $dest)) {
                return "目錄剪切成功!";
            } else {
                return "目錄剪切失??!";
            }
        } else {
            return "該目錄下已存在此文件!";
        }
    } else {
        return "目標(biāo)不是目錄!";
    }
}

//echo cut_dir('admin','js');

/**
 * 目錄讀取操作
 * @param $path // 讀取的目錄
 * @return array    數(shù)組|失敗
 */
function read_dir($path)
{
    $arr = [];
    $dir = opendir($path);
    while ($item = readdir($dir)) {
        if ($item != "." && $item != "..") {
            if (is_file($path . "/" . $item)) {
                $arr['file'][] = $item;
            }
            if (is_dir($path . "/" . $item)) {
                $arr['dir'][] = $item;
            }
        }
    }
    closedir($dir);
    return $arr;
}

//var_dump(read_dir('js'));

/**
 * 目錄大小查詢操作
 * @param $path     // 需要查詢大小的目錄
 * @return int      // 目錄的大小
 */
function dir_size($path)
{
    $sum = 0;
    global $sum;
    $dir = opendir($path);
    while ($item = readdir($dir)) {
        if ($item != "." && $item != "..") {
            if (is_file($path . "/" . $item)) {
                $sum += filesize($path . "/" . $item);
            }
            if (is_dir($path . "/" . $item)) {
                $func = __FUNCTION__;
                $func($path . "/" . $item);
            }
        }
    }
    return $sum;
}
//echo trans_byte(dir_size('js'));

配置文件

<?php
/**
 * 配置文件
 */
// 引入方法類庫
include "function.php";
// 設(shè)置主目錄
$path = "file";
// 讀取主目錄內(nèi)容
@$path = $_REQUEST['path'] ? $_REQUEST['path'] : $path;

$data = read_dir($path);
// 判斷目錄是否有內(nèi)容
if (!$data) {
    echo "<script>alert('無文件或目錄!')</script>";
}

// 判斷點擊操作
@$act = $_REQUEST['act'];
// 接收創(chuàng)建的文件名
@$filename = $_REQUEST['filename'];
@$dirname = $_REQUEST['dirname'];
// 拼接主頁地址
@$url = "index.php?path={$path}";

操作配置

<?php
/**
 * 操作配置
 */
include "common.php";
// 判斷點擊操作
if ($act == "創(chuàng)建文件") {
    // 創(chuàng)建文件操作
    $mes = create_file($path . "/" . $filename);
    // 設(shè)置提示彈窗
    alertMes($mes, $url);
    // 判斷點擊操作
}elseif ($act == "showContent") {
    $content = read_file($filename);
    if(strlen($content)){
        $newContent = highlight_string($content,true);
        $str = <<<HERE
    <table width="100%" bgcolor="#fafad2" cellpadding="5" cellspacing="0">
    <tr>
    <td>{$newContent}</td>
    </tr>
</table>
HERE;
     echo $str;
    } else {
        alertMes('文件為空,請編輯后再查看!', $url);
    }
}elseif ($act == "editContent") {
    $content = file_get_contents($filename);
    $str = <<<HERE
    <form action = "index.php?act=doEdit" method="post">
    <textarea cols="180" rows="10" name="content">{$content}</textarea>
    <input type="hidden" name="filename" value="{$filename}">
    <input type="submit" value="修改內(nèi)容">
</form>
HERE;
    echo $str;
}elseif ($act == "doEdit") {
    $content = $_REQUEST['content'];
    if (file_put_contents($filename, $content)) {
        $mes = '文件修改成功!';
    } else {
        $mes = '文件修改失??!';
    }
    alertMes($mes, $url);
}elseif ($act == "renameFile") {
    $str = <<<HERE
<form action="index.php?act=doRename" method="post">
<input type="text" name="newName" placeholder="請輸入新名稱">
<input type="hidden" name="path" value="{$path}">
<input type="hidden" name="filename" value="{$filename}">
<input type="submit" value="重命名">
</form>
HERE;
    echo $str;
}elseif ($act == "doRename"){
    $newName = $_REQUEST['newName'];
    $mes = rename_file($filename,$path."/".$newName);
    alertMes($mes,$url);
}elseif ($act == "copyFile"){
    $str = <<<HERE
<form action="index.php?act=doCopy" method="post">
<input type="text" name="destName" placeholder="將文件復(fù)制到">
<input type="hidden" name="path" value="{$path}">
<input type="hidden" name="filename" value="{$filename}">
<input type="submit" value="復(fù)制文件">
</form>
HERE;
    echo $str;
}elseif ($act == "doCopy"){
    $destName = $_REQUEST['destName'];
    $mes = copy_file($filename,$path."/".$destName);
    alertMes($mes,$url);
}elseif ($act == "cutFile"){
    $str = <<<HERE
<form action="index.php?act=doCut" method="post">
<input type="text" name="newFolderName" placeholder="將文件剪切到">
<input type="hidden" name="path" value="{$path}">
<input type="hidden" name="filename" value="{$filename}">
<input type="submit" value="剪切文件">
</form>
HERE;
    echo $str;
}elseif ($act == "doCut"){
    $newFolderName = $_REQUEST['newFolderName'];
    $mes = cut_file($filename,$path."/".$newFolderName);
    alertMes($mes,$url);
}elseif ($act == "dowFile"){
   $mes = dow_file($filename);
}elseif ($act == "delFile"){
    if(unlink($filename)){
        alertMes("文件刪除成功!",$url);
    }else{
        alertMes("文件刪除失敗!",$url);
    }
}elseif ($act == "上傳文件"){
    $fileInfo = $_FILES['myFile'];
    $mes = upload_file($fileInfo,$path);
    alertMes($mes,$url);
}elseif ($act == "創(chuàng)建文件夾"){
    $mes = create_folder($path."/".$dirname);
    alertMes($mes,$url);
}elseif ($act == "renameFolder"){
    $str =<<<HERE
<form action="index.php?act=doRenameFolder" method="post">
重命名為:<input type="text" name="newFolderName" placeholder="請輸入文件夾名稱">
<input type="hidden" name="path" value="{$path}">
<input type="hidden" name="dirname" value="{$dirname}">
<input type="submit" value="重命名">
</form>
HERE;
    echo $str;
}elseif ($act == "doRenameFolder") {
    $newFolderName = $_REQUEST['newFolderName'];
    $mes = rename_dir($dirname, $path . "/" . $newFolderName);
    alertMes($mes, $url);

} elseif ($act == "copyFolder") {
    $str = <<<HERE
<form action="index.php?act=doCopyFolder" method="post">
復(fù)制為:<input type="text" name="newFolderName" placeholder="復(fù)制文件夾到">
<input type="hidden" name="dirname" value="{$dirname}">
<input type="hidden" name="path" value="{$path}">
<input type="submit" value="復(fù)制">
</form>
HERE;
    echo $str;
} elseif ($act == "doCopyFolder") {
    $newFolderName = $_REQUEST['newFolderName'];
    $mes = copy_dir($dirname, $path . "/" . $newFolderName . "/" . basename($dirname));
    alertMes($mes, $url);
} elseif ($act == "cutFolder") {
    $str = <<<HERE
<form action="index.php?act=doCutFolder" method="post">
剪切為:<input type="text" name="newFolderName" placeholder="剪切文件夾到">
<input type="hidden" name="dirname" value="{$dirname}">
<input type="hidden" name="path" value="{$path}">
<input type="submit" value="剪切">
</form>
HERE;
    echo $str;
} elseif ($act == "doCutFolder") {
    $newFolderName = $_REQUEST['newFolderName'];
    $mes = cut_dir($dirname, $path . "/" . $newFolderName);
    alertMes($mes, $url);
} elseif ($act == "delFolder") {
    $mes = del_folder($dirname);
    alertMes($mes, $url);
}

公共提示信息

<?php
/**
 * 公共提示信息
 */
function alertMes($mes,$url)
{
    echo "<script>alert('{$mes}'); location.hr					

Korrigierender Lehrer:天蓬老師Korrekturzeit:2019-05-09 14:28:01
Zusammenfassung des Lehrers:以后只需要復(fù)制主要代碼就可以, 現(xiàn)在不完整看起來更累, 這次先過, 下次注意

Versionshinweise

Beliebte Eintr?ge