📅  最后修改于: 2023-12-03 15:26:12.906000             🧑  作者: Mango
文件查看器是一种用于查看文件和目录列表的应用程序。在Codeigniter中,可以创建一个文件查看器,使用户可以查看服务器上的文件和目录。该文件查看器将使用PHP来生成服务器上的文件和目录列表。
该文件查看器将使用以下技术:
你需要先创建一个Codeigniter项目,这可以通过以下命令完成:
$ composer create-project codeigniter4/appstarter file_viewer
在你的应用程序目录中,创建一个名为“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);
}
}
在你的应用程序视图目录中,创建一个名为“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>
现在你可以打开浏览器并输入http://localhost/file_viewer/index
来查看你的文件和目录列表了。
现在你可以使用Codeigniter和PHP来创建一个基本的文件查看器了。你可以使用该文件查看器浏览服务器上的文件和目录,并下载文件,以及根据名称、大小或修改时间来排序文件列表。