PHP实战之实现Web在线文件管理器

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>> hot3.png

  •  目录
  • 1.前言
  • 2. 函数分析
  • 2.1截取文件扩展名
  • 2.1.1 pathinfo语法
  • 2.1.2 strtolower()语法
  • 2.2对文件的相关操作
  • 2.2.1判断是否是文件is_file()
  • 2.2.2判断是否是目录is_dir()
  • 2.2.3检测当前目录是否有同名文件file_exists(path)
  • 2.2.4创建文件夹mkdir()
  • 2.2.5重命名文件夹rename()
  • 2.2.6删除文件unlink()
  • 2.2.7删除文件夹rmdir()
  • 2.2.8创建文件touch()
  • 2.2.9得到文件的路径dirname()
  • 2.2.10复制文件copy()
  • 3. 封装优化
  • 3.1项目演示示例图
  • 4. 总结

1.前言

我按照慕课网的教学视频,实现了WEB在线管理系统,下面我把这次项目的一些要点记录一下,加深印象;首先,要制作一个像百度云盘那样的WEB在线文件管理器,我想我们需要搞定以下几点:

  • 对文件夹的递归遍历
  • 对文件/文件夹的相关操作(查看、增加、删除、修改文件/文件夹名)

代码分享:https://github.com/mtdgclub/webDisk

2.函数分析

2.1截取文件扩展名

function getExt($filename){
return strtolower(pathinfo($filename,PATHINFO_EXTENSION));
}

上面这个函数是将得到文件的扩展名进行返回;此处涉及到的函数pathinfo(),是以数组的形式返回关于文件路径的信息,返回的数组元素如下: 

  • [dirname]: 目录路径
  • [basename]: 文件名
  • [extension]: 文件后缀名
  • [filename]: 不包含后缀的文件名

2.1.1 pathinfo语法

pathinfo(path,options)

  • path:必须,规定要检查的路径
  • options:可选。规定要返回的数组元素。默认是all。可选值如下:
PATHINFO_DIRNAME:只返回dirname
PATHINFO_BASENAME:只返回basename
PATHINFO_EXTENSION:只返回extension
PATHINFO_FILENAME:只返回filename

2.1.2 strtolower()语法

strtolower()函数把字符串转换为小写。(该函数是二进制安全的)

其他相关函数:

  • strtoupper():把字符串转换成大写
  • lcfirst():把字符串中首字符转换成小写
  • ucfirst():把字符串中首字符转换成大写
  • ucwords():把字符串中每个单词的首字符转换成大写

2.2对文件的相关操作

2.2.1判断是否是文件is_file()

is_file() 函数检查指定的文件是否是常规的文件。如果文件是常规的文件,该函数返回 TRUE。

2.2.2判断是否是目录is_dir()

is_dir() 函数检查指定的文件是否是一个目录。如果目录存在,该函数返回 TRUE。

2.2.3检测当前目录是否有同名文件file_exists(path)

file_exists() 函数检查文件或目录是否存在。如果指定的文件或目录存在则返回 TRUE,否则返回 FALSE。

2.2.4创建文件夹mkdir()

mkdir() 函数创建目录。如果成功该函数返回 TRUE,如果失败则返回 FALSE。

语法:mkdir(path,mode,recursive,context)

参数1:path,必须,创建目录的名称

参数2:mode,可选,规定权限,默认0777(全局访问)

参数3:recursive可选。规定是否设置递归模式

比如:

$path=file/web;
mkdir($path, 0777, true)

2.2.5重命名文件夹rename()

rename() 函数重命名文件或目录。如果成功,该函数返回 TRUE。如果失败,则返回 FALSE。

语法:rename(oldname,newname,context)

参数1:oldname,必需。规定要重命名的文件或目录。

参数2:newname,必需。规定文件或目录的新名称。

参数3:context,可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。

比如:

$old=file/web/index.php;
$new=check.php;
rename($old, $new);

2.2.6删除文件unlink()

unlink() 函数删除文件。如果成功,该函数返回 TRUE。如果失败,则返回 FALSE。

比如:

unlink($path."/".$item);

2.2.7删除文件夹rmdir()

rmdir() 函数删除空的目录。如果成功,该函数返回 TRUE。如果失败,则返回 FALSE。

比如:

$old=file/web;
rmdir($path);

2.2.8创建文件touch()

touch() 函数设置指定文件的访问和修改时间。如果成功,该函数返回 TRUE。如果失败,则返回 FALSE。

语法:touch(filename,time,atime)

参数1:filename,必需。规定要接触的文件。

参数2:time,可选。设置时间。默认设置为当前系统时间。

参数3:atime,可选。设置访问时间。如果参数未设置或设置为与 time 参数相同,则默认设置为当前系统时间。

PS:如果指定文件不存在,会被创建务必保证同一目录下没有同名文件(有则可按照要求在后面增加_1)

比如:

$path=file/web/index.php;
touch($path);

2.2.9得到文件的路径dirname()

dirname() 函数返回路径中的目录名称部分。

比如:

$oldname=c:/test/index.php;
dirname($oldname);//返回c:/test

2.2.10复制文件copy()

copy() 函数复制文件。该函数如果成功则返回 TRUE,如果失败则返回 FALSE。

语法:copy(file,to_file)

参数1:file,必需。规定要复制的文件。

参数2:to_file,必需。规定复制文件的目的地。

比如:

copy($filename, $dstname . "/" . basename($filename))
//将文件从 source 拷贝到 destination。如果成功则返回 TRUE,否则返回 FALSE

3.封装优化

核心代码详见FileSave.class.php,github分享:https://github.com/mtdgclub/webDisk

3.1项目演示示例图

PHP实战之实现Web在线文件管理器_第1张图片

4.总结

通过Web在线文件管理器实战,基本完成了对文件和文件夹的查看、创建、修改、重命名、复制、移动、删除、下载、上传等操作,也让我有了更深一层的理解和实操经验,通过项目的逐步封装和对比百度云盘,发现还是有很多可以改善和优化的地方,比如可以把文件存储到OSS上、改造成多用户模式、引入数据快照等等,希望后续能够把它完善。

你可能感兴趣的:(PHP实战之实现Web在线文件管理器)