#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>
- 目录
- 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项目演示示例图
4.总结
通过Web在线文件管理器实战,基本完成了对文件和文件夹的查看、创建、修改、重命名、复制、移动、删除、下载、上传等操作,也让我有了更深一层的理解和实操经验,通过项目的逐步封装和对比百度云盘,发现还是有很多可以改善和优化的地方,比如可以把文件存储到OSS上、改造成多用户模式、引入数据快照等等,希望后续能够把它完善。