📜  文件查看器 codeigniter - PHP (1)

📅  最后修改于: 2023-12-03 15:26:12.906000             🧑  作者: Mango

文件查看器 Codeigniter - PHP

文件查看器是一种用于查看文件和目录列表的应用程序。在Codeigniter中,可以创建一个文件查看器,使用户可以查看服务器上的文件和目录。该文件查看器将使用PHP来生成服务器上的文件和目录列表。

功能
  1. 显示服务器上的文件和目录列表
  2. 支持文件下载
  3. 支持目录导航
  4. 显示文件和目录的大小和修改时间
  5. 支持按名称、大小和修改时间排序
技术

该文件查看器将使用以下技术:

  1. Codeigniter作为PHP框架
  2. 纯PHP代码生成文件和目录列表
  3. 使用jQuery和Bootstrap来为页面添加样式和交互性
步骤
步骤1:创建Codeigniter项目

你需要先创建一个Codeigniter项目,这可以通过以下命令完成:

$ composer create-project codeigniter4/appstarter file_viewer
步骤2:创建控制器

在你的应用程序目录中,创建一个名为“File_viewer.php”的控制器,并添加以下代码:

<?php

namespace App\Controllers;

class File_viewer extends BaseController
{
    public function index($dir = ".")
    {
        $this->load->helper('file');
        $this->load->helper('date');

        $data['files'] = $this->get_dir_files($dir);
        $data['dir'] = $dir;

        echo view('file_viewer', $data);
    }

    private function get_dir_files($dir)
    {
        $dir = rtrim($dir, "/");

        $files = get_filenames($dir);
        $dirs = get_dir_file_info($dir);

        $files_info = array();

        foreach ($dirs as $d)
        {
            $file_info = array();
            $file_info['name'] = $d['name'];
            $file_info['type'] = "dir";
            $file_info['path'] = $d['relative_path'];
            $file_info['size'] = '-';
            $file_info['mtime'] = mdate("%Y-%m-%d %H:%i:%s", $d['date']);
            $files_info[] = $file_info;
        }

        foreach ($files as $f)
        {
            if ($f != "index.php")
            {
                $file_info = array();
                $file_info['name'] = $f;
                $file_info['type'] = "file";
                $file_info['path'] = $dir."/".$f;
                $file_info['size'] = filesize($dir."/".$f)." bytes";
                $file_info['mtime'] = mdate("%Y-%m-%d %H:%i:%s", filemtime($dir."/".$f));
                $files_info[] = $file_info;
            }
        }

        return $files_info;
    }

    public function download($filepath)
    {
        $this->load->helper('download');
        $data = file_get_contents($filepath); // Read the file's contents
        $name = basename($filepath);

        force_download($name, $data);
    }
}
步骤3:创建视图模板

在你的应用程序视图目录中,创建一个名为“file_viewer.php”的文件,并添加以下代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>File Viewer</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
    <h2>File Viewer</h2>

    <table class="table table-bordered">
        <thead>
        <tr>
            <th>Name</th>
            <th>Type</th>
            <th>Size</th>
            <th>Last modified</th>
            <th></th>
        </tr>
        </thead>
        <tbody>
        <?php foreach ($files as $f) { ?>
            <tr>
                <td><a href="<?php if ($f['type'] == 'dir') { echo "/file_viewer/index/".$f['path']; } else { echo "/file_viewer/download/".$f['path']; } ?>"><?php echo $f['name']; ?></a></td>
                <td><?php echo $f['type']; ?></td>
                <td><?php echo $f['size']; ?></td>
                <td><?php echo $f['mtime']; ?></td>
                <td><?php if ($f['type'] != 'dir') { ?> <a href="/file_viewer/download/<?php echo $f['path']; ?>">Download</a> <?php } ?></td>
            </tr>
        <?php } ?>
        </tbody>
    </table>

</div>

</body>
</html>
步骤4:浏览文件

现在你可以打开浏览器并输入http://localhost/file_viewer/index来查看你的文件和目录列表了。

结论

现在你可以使用Codeigniter和PHP来创建一个基本的文件查看器了。你可以使用该文件查看器浏览服务器上的文件和目录,并下载文件,以及根据名称、大小或修改时间来排序文件列表。