文件操作函数file: file/action.php
<?php
/* 文件操作函数 */
function get_file_list($dir)
{
//获取相应$dir目录下的文件名
if (!is_dir($dir)) return false;
$handler = opendir($dir);
if ($handler === false) return false;
$list = array('file' => array(), 'dir' => array()); //创建一个list数组,且里面存在一个file和dir数组,来分别存储文件和目录列表
while ($file = readdir($handler)) {
if ($file == "." || $file == "..") continue; //点号表示当前目录,两个点号表示上级目录,这个需要排除
if (is_dir($dir . "/" . $file)) //判断是目录
$list['dir'][] = $file;
if (is_file($dir . "/" . $file)) //判断是文件
$list['file'][] = $file;
//还有其他类型的文件,不列出,忽略
}
closedir($handler);
return $list;
}
function post_action()
{
$rt = array('status' => false, 'message' => ''); //通过设置一个状态数组,并返回
global $file_dir; //将04file04.php文件中的$file_dir变量作为一个全局变量
echo "\n<!--$file_dir-->\n"; //输出到文件,使用html注释
if($_POST['action'] =="new_dir"){
//这个操作是新建文件夹,所以不需要判断提交的操作文件是否存在
if(file_exists($file_dir."/".$_POST['new_dir']) == false){
//判断目的文件是否存在,file_exist和is_file与is_dir相比就是只有有那个东西,不管是什么,有就存在
if(mkdir($file_dir."/".$_POST['new_dir'])){
$rt['message']=$_POST['new_dir']." 文件夹创建成功";
$rt['status'] = true;
}else{
$rt['message']=$_POST['new_dir']." 文件夹创建失败";
}
}else{
$rt['message'] = "要创建的文件夹已存在";
}
return $rt;//此时执行返回操作就是说本函数执行完毕,不再执行之后的内容
}
if (file_exists($file_dir . "/" . $_POST['file']) == false) {
//判定文件是否存在
$rt['message'] = "提交的文件或路径不存在";
} else {
switch ($_POST['action']) {
case "rename":
if (file_exists($file_dir . "/" . $_POST['rename']) == true) {
$rt['message'] = "要重命名的目标文件或路径已存在";
}
if (rename($file_dir . "/" . $_POST['file'], $file_dir . "/" . $_POST['rename'])) {
$rt['message'] = "文件重命名成功";
$rt['status'] = true;
} else {
$rt['message'] = "文件重命名失败";
}
break;
case "copy":
if (file_exists($file_dir . "/" . $_POST['copy']) == true) {
$rt['message'] = "要复制的目标文件或路径已存在";
}
if (copy($file_dir . "/" . $_POST['file'], $file_dir . "/" . $_POST['copy'])) {
$rt['message'] = "文件或目录复制成功";
$rt['status'] = true;
} else {
$rt['message'] = "文件复制失败,如果是文件夹,则无法复制";
}
break;
case "delete":
if (unlink($file_dir . "/" . $_POST['file'])) {
$rt['message'] = $_POST['file'] . " 删除成功";
$rt['status'] = true;
} else {
$rt['message'] = "文件或目录删除失败,请检查权限,或者查看文件夹是否存在在目录,因为未对该情况进行操作";
}
break;
}
}
return $rt;
}
/* 文件操作函数 */
function get_file_list($dir)
{
//获取相应$dir目录下的文件名
if (!is_dir($dir)) return false;
$handler = opendir($dir);
if ($handler === false) return false;
$list = array('file' => array(), 'dir' => array()); //创建一个list数组,且里面存在一个file和dir数组,来分别存储文件和目录列表
while ($file = readdir($handler)) {
if ($file == "." || $file == "..") continue; //点号表示当前目录,两个点号表示上级目录,这个需要排除
if (is_dir($dir . "/" . $file)) //判断是目录
$list['dir'][] = $file;
if (is_file($dir . "/" . $file)) //判断是文件
$list['file'][] = $file;
//还有其他类型的文件,不列出,忽略
}
closedir($handler);
return $list;
}
function post_action()
{
$rt = array('status' => false, 'message' => ''); //通过设置一个状态数组,并返回
global $file_dir; //将04file04.php文件中的$file_dir变量作为一个全局变量
echo "\n<!--$file_dir-->\n"; //输出到文件,使用html注释
if($_POST['action'] =="new_dir"){
//这个操作是新建文件夹,所以不需要判断提交的操作文件是否存在
if(file_exists($file_dir."/".$_POST['new_dir']) == false){
//判断目的文件是否存在,file_exist和is_file与is_dir相比就是只有有那个东西,不管是什么,有就存在
if(mkdir($file_dir."/".$_POST['new_dir'])){
$rt['message']=$_POST['new_dir']." 文件夹创建成功";
$rt['status'] = true;
}else{
$rt['message']=$_POST['new_dir']." 文件夹创建失败";
}
}else{
$rt['message'] = "要创建的文件夹已存在";
}
return $rt;//此时执行返回操作就是说本函数执行完毕,不再执行之后的内容
}
if (file_exists($file_dir . "/" . $_POST['file']) == false) {
//判定文件是否存在
$rt['message'] = "提交的文件或路径不存在";
} else {
switch ($_POST['action']) {
case "rename":
if (file_exists($file_dir . "/" . $_POST['rename']) == true) {
$rt['message'] = "要重命名的目标文件或路径已存在";
}
if (rename($file_dir . "/" . $_POST['file'], $file_dir . "/" . $_POST['rename'])) {
$rt['message'] = "文件重命名成功";
$rt['status'] = true;
} else {
$rt['message'] = "文件重命名失败";
}
break;
case "copy":
if (file_exists($file_dir . "/" . $_POST['copy']) == true) {
$rt['message'] = "要复制的目标文件或路径已存在";
}
if (copy($file_dir . "/" . $_POST['file'], $file_dir . "/" . $_POST['copy'])) {
$rt['message'] = "文件或目录复制成功";
$rt['status'] = true;
} else {
$rt['message'] = "文件复制失败,如果是文件夹,则无法复制";
}
break;
case "delete":
if (unlink($file_dir . "/" . $_POST['file'])) {
$rt['message'] = $_POST['file'] . " 删除成功";
$rt['status'] = true;
} else {
$rt['message'] = "文件或目录删除失败,请检查权限,或者查看文件夹是否存在在目录,因为未对该情况进行操作";
}
break;
}
}
return $rt;
}
文件操作表单
<?php
/* 文件的重命名,复制、删除操作 */
header("Content-Type: text/html; charset=utf-8");
include("file/action.php");
$file_dir = "file/write";
$file_list = get_file_list($file_dir);
if ($file_list === false) die("文件列表获取失败,请检查是否存在"$file_dir"目录");
?>
<html>
<head>
<title>文件操作</title>
</head>
<body>
<p>可以通过查看源码的方式查看下面隐藏的注释内容</p>
<!--测试POST表单-->
<!--<?php print_r($_POST);?>-->
<!--下面的语句用于测试输出的文件或目录列表-->
<!--<?php print_r($file_list);?>-->
<?php
if($_SERVER['REQUEST_METHOD']=="POST"){
echo "<div style="background-color: #f5f5dc;padding: 5px;">";
$arr = post_action();
if($arr['status']){
echo "<p style="color: blue;">".$arr['message'].
"<a href="".basename($_SERVER['SCRIPT_NAME'])."">刷新</a></p>";
}else{
echo "<p style="color: red;">".$arr['message']."</p>";
}
echo "</div>";
}
?>
<form action="" method="post">
<p>选择要操作的文件或目录列表:<select name="file">
<?php
foreach ($file_list['dir'] as $dir)
echo "<option value="$dir">[目录] $dir</option>\n";
foreach ($file_list['file'] as $file)
echo "<option value="$file">[文件] $file</option>\n";
?>
</select></p>
<p>修改名为:<input name="rename" type="text" value="" />
<button type="submit" value="rename" name="action">重命名</button></p>
<p>复制为:<input name="copy" type="text" value="" />
<button type="submit" value="copy" name="action">开始复制文件</button></p>
<p>创建文件夹:<input name="new_dir" type="text" value="" />
<button type="submit" value="new_dir" name="action">创建文件夹</button></p>
<p> <button type="submit" value="delete" name="action">删除选中文件</button></p>
</form>
</body>
</html>
/* 文件的重命名,复制、删除操作 */
header("Content-Type: text/html; charset=utf-8");
include("file/action.php");
$file_dir = "file/write";
$file_list = get_file_list($file_dir);
if ($file_list === false) die("文件列表获取失败,请检查是否存在"$file_dir"目录");
?>
<html>
<head>
<title>文件操作</title>
</head>
<body>
<p>可以通过查看源码的方式查看下面隐藏的注释内容</p>
<!--测试POST表单-->
<!--<?php print_r($_POST);?>-->
<!--下面的语句用于测试输出的文件或目录列表-->
<!--<?php print_r($file_list);?>-->
<?php
if($_SERVER['REQUEST_METHOD']=="POST"){
echo "<div style="background-color: #f5f5dc;padding: 5px;">";
$arr = post_action();
if($arr['status']){
echo "<p style="color: blue;">".$arr['message'].
"<a href="".basename($_SERVER['SCRIPT_NAME'])."">刷新</a></p>";
}else{
echo "<p style="color: red;">".$arr['message']."</p>";
}
echo "</div>";
}
?>
<form action="" method="post">
<p>选择要操作的文件或目录列表:<select name="file">
<?php
foreach ($file_list['dir'] as $dir)
echo "<option value="$dir">[目录] $dir</option>\n";
foreach ($file_list['file'] as $file)
echo "<option value="$file">[文件] $file</option>\n";
?>
</select></p>
<p>修改名为:<input name="rename" type="text" value="" />
<button type="submit" value="rename" name="action">重命名</button></p>
<p>复制为:<input name="copy" type="text" value="" />
<button type="submit" value="copy" name="action">开始复制文件</button></p>
<p>创建文件夹:<input name="new_dir" type="text" value="" />
<button type="submit" value="new_dir" name="action">创建文件夹</button></p>
<p> <button type="submit" value="delete" name="action">删除选中文件</button></p>
</form>
</body>
</html>
没写和,差评
过滤了<!DOCTYPE HTML>
还有<meta charset="UTF-8">
什么破评论系统,非要我人工编码一次才能显示HTML代码……
不错的小站呀!
青山隐隐水迢迢,秋尽江南草未凋