您的位置:首页 > 编程语言 > PHP开发

基于PHP的简单文件WEB在线文件管理

2014-10-12 19:54 218 查看
最近在慕课网进行学习PHP,学习到在线文件管理这一节,然后将我自己做的进行一个总结。

下面就详细介绍在线文件管理的操作流程。

a.   获取初始文件夹中的内容

这里编写函数对初始文件夹中的文件和文件夹进行遍历存放到一个数组中,以供下面的调用。

/**

 * 获取目录中的文件及目录情况

 * @param string $path

 * @return array $arr;

 */

function readDirectory($path) {

      // 打开指定目录

      $handle = opendir ( $path );

      while ( ($item = readdir ( $handle )) !== false ) {

            // 对.和..进行处理

            if ($item != "." && $item != "..") {

                  if (is_file ( $path . "/" . $item )) {

                        $arrFile['file'] [] = $item;

                  } elseif (is_dir ( $path . "/" . $item )) {

                        $arrFile['dir'] [] = $item;

                  }

            }

      }

      closedir ( $handle );

      return $arrFile;

}

通过上述函数的操作,已经获取到了初始文件夹中的各种文件和文件夹的名称。

b.   对a.中获取到的文件进行操作

通过a.中的操作,已经获取到了初始文件夹中的各个文件的名称,下面只需对这些文件进行操作即可实现文件内容的查看,修改,重命名。

1.文件内容的查看

PHP中对文件的操作是相对较为简单的,各种函数都有封装好,我们只需去调用可以实现功能的函数进行操作即可。PHP中查看文件内容的函数是file_get_contents()。

在这一步中,通过PHP操作也可以实现对PHP代码进行高亮显示,PHP中也提供了相应的操作函数。Highlight_string()和highlight_file()进行操作,这里string和file的区别就是前者可以对字符串直接进行操作,而后者则是对文件进行直接操作。

当用户要查看那个文件时,只需将文件的名称传递过去,然后在浏览器端显示出来即可。这里的传递方式可以是GET也可以时POST方式,为了方便,文中采用的就是GET方式,但是在使用GET方式的时候一定要对参数进行过滤,如果过滤不当则会导致漏洞的产生。如文件包含,代码执行,XSS跨站等漏洞,危害较大。

2.文件内容的修改

通过1的操作,文件的内容已经获取到了,下面就要实现的是对文件内容的修改,而修改在PHP中也是很简单的,只需调用file_put_contents()函数进行操作即可实现功能。

再通过用户的操作传递过去文件的名称,然后进行文件内容的修改即可实现该功能。

3.文件的重命名

文件的重命名,由于有了上面两步的操作,可以发现流程是和上述的操作是相同的,只是这次调用的函数不同而已。文件的重命名,PHP中也封装好了相应的函数,PHP中文件重命名的函数是:rename()函数。通过调用rename()函数进行操作即可实现该功能。

c.   对a.中获取到的文件夹进行操作

1.获取文件夹的大小

一个文件夹的大小即就是这个文件夹中所有的文件的大小之和,因此要获取文件夹的大小,就要一个文件一个文件的获取,然后对这些进行求和。

而这一步骤中较为重要的就是可能要使用的函数的递归调用,因为文件夹中完全有可能在嵌套一个文件夹或多个文件夹,因此这里就要用到函数的递归调用。而在函数的递归调用中,又有可能用到一个可变函数名。如下代码所示:

Function getSize() {

$func = __FUNCTION__;   //获取当前函数的名称

$func(文件夹名称);   //函数递归调用

}

此步骤的完整版代码如下:

/**

 * 遍历文件夹的大小(即就是用遍历文件夹下每个文件的大小,然后进行相加)

 * @param string $dir

 * @return string 文件夹大小

 */

function getDirSize($path) {

         $arrFile = readDirectory($path);

         $size = 0;

         global $size;

         foreach($arrFile as $key => $val) {

                  if($key == 'file') {

                           foreach($val as $val) {

                                    $filename = $path . '/' . $val;

                                    $size += filesize($filename);

                           }

                  }else{

                           foreach($val as $val) {

                                    $path = $path . '/' . $val;

                                    getDirSize($path);

                           }

                  }

         }

         return getSize($size);

}

 

2.对文件夹进行重命名

对于文件夹的重命名,PHP中也封装了相应的函数供我们去调用,急救室rename(),即就是上文中提到的文件的重命名函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: