• 检测文件目录及其子文件到底的代码-实现可展开的目录列表和文件浏览功能的HTML代码


    此实现了一个可展开的目录列表和文件浏览功能

    该代码通过PHP实现了扫描指定目录下的文件和目录,并按照一定的排序规则进行展示。

    用户可以点击目录名称,展开或折叠该目录下的子目录和文件列表。

    对于文件,显示了文件名、修改时间和文件大小,并提供了文件链接以在新标签页中打开文件。

    对于空目录,显示了"Empty Directory"的提示。此外,代码还提供了文件大小格式化的函数,将文件大小转换为易读的单位(如KB、MB、GB等)。

    该代码通过HTML、CSS和JavaScript实现,为网页添加了一种直观和友好的目录浏览方式,方便用户快速查找和访问文件。

    1. <span class="hljs-built_in">Directory</span> Listing
    2. "viewport" content="width=device-width, initial-scale=1.0">
    3. Directory Listing

    4. class="table">
    5. <tr>
    6. <td class="left">文件名td>
    7. <td class="center">Date 修改时间td>
    8. <td class="right">大小td>
    9. tr>
    10. table>
    11. <div style="width:650px;">
    12. <hr>
    13. php
    14. function listDirectoriesAndFiles($dir, $indent = '') {
    15. $result = '';
    16. // 扫描当前目录下的文件和目录
    17. $files = scandir($dir);
    18. $directories = [];
    19. $filesList = [];
    20. foreach ($files as $file) {
    21. if ($file === '.' || $file === '..') {
    22. continue;
    23. }
    24. $filePath = $dir . '/' . $file;
    25. if (is_dir($filePath)) {
    26. // 如果是目录,将目录名添加到 $directories 数组
    27. $directories[] = $file;
    28. } else {
    29. // 如果是文件,将文件名添加到 $filesList 数组
    30. $filesList[] = $file;
    31. }
    32. }
    33. // 对目录和文件列表进行排序
    34. sort($directories);
    35. sort($filesList);
    36. // 输出目录列表
    37. foreach ($directories as $directory) {
    38. $subDirectoriesAndFiles = listDirectoriesAndFiles($dir . '/' . $directory, $indent . '');
    39. $result .= '
      ';
    40. $result .= $indent . '📂' . $directory . '->';
    41. $result .= '
      ';
    42. $result .= '
    43. $result .= $subDirectoriesAndFiles;
    44. $result .= '
      ';
    45. }
    46. $result .= '
    47. ';
    48. // 输出文件列表
    49. foreach ($filesList as $file) {
    50. $filePath = $dir . '/' . $file;
    51. $fileSize = filesize($filePath);
    52. $fileSizeFormatted = formatFileSize($fileSize);
    53. $fileModified = date("Y-m-d H:i:s", filemtime($filePath));
    54. $result .= '
    55. ';
    56. $result .= '
    57. ';
    58. $result .= '
    59. ';
    60. $result .= '
    61. ';
    62. $result .= '
    63. ';
    64. }
    65. $result .= '
    66. $filePath . '" target="_blank">' . $file . '' . $fileModified . '' . $fileSizeFormatted . '
      ';
    67. $result .= '
      '
      ;
    68. if (empty($directories) && empty($filesList)) {
    69. $result .= '
      ';
    70. $result .= $indent . 'Empty Directory';
    71. $result .= '
      ';
  • }
  • return $result;
  • }
  • function formatFileSize($size) {
  • $units = array('B', 'KB', 'MB', 'GB', 'TB');
  • $i = 0;
  • while ($size >= 1024 && $i < 4) {
  • $size /= 1024;
  • $i++;
  • }
  • return round($size, 2) . $units[$i];
  • }
  • // 获取当前目录路径
  • $dir = './';
  • // 获取当前目录下的所有目录和文件
  • $directoriesAndFiles = listDirectoriesAndFiles($dir);
  • // 输出目录和文件列表
  • echo $directoriesAndFiles;
  • ?>
  • 第二种使用div

    1. <span class="hljs-built_in">Directory</span> Listing
    2. Index of /Directory Listing/

    3. "width:650px;">
    4. class="file">
    5. <span style="margin-right: 265px;">文件/文件夹span>
    6. <span style="margin-right: 95px;">大小span>
    7. <span class="file-modified" >Date 修改时间span>
    8. div>
    9. <hr>
    10. php
    11. function listDirectoriesAndFiles($dir, $indent = '') {
    12. $result = '';
    13. // 扫描当前目录下的文件和目录
    14. $files = scandir($dir);
    15. $directories = [];
    16. $filesList = [];
    17. foreach ($files as $file) {
    18. if ($file === '.' || $file === '..') {
    19. continue;
    20. }
    21. $filePath = $dir . '/' . $file;
    22. if (is_dir($filePath)) {
    23. // 如果是目录,将目录名添加到 $directories 数组
    24. $directories[] = $file;
    25. } else {
    26. // 如果是文件,将文件名添加到 $filesList 数组
    27. $filesList[] = $file;
    28. }
    29. }
    30. // 对目录和文件列表进行排序
    31. sort($directories);
    32. sort($filesList);
    33. // 输出目录列表
    34. foreach ($directories as $directory) {
    35. $result .= '
      ';
    36. $result .= $indent . '📂' . $directory . '->';
    37. $result .= '
      ';
  • $result .= '
  • $subDirectoriesAndFiles = listDirectoriesAndFiles($dir . '/' . $directory, $indent . '');
  • $result .= $subDirectoriesAndFiles;
  • $result .= '
    ';
  • }
  • // 输出文件列表
  • foreach ($filesList as $file) {
  • $filePath = $dir . '/' . $file;
  • $fileSize = filesize($filePath);
  • $fileSizeFormatted = formatFileSize($fileSize);
  • $fileModified = date("Y-m-d H:i:s", filemtime($filePath));
  • $result .= '
  • $result .= '' . $fileModified . '';
  • $result .= '' . $fileSizeFormatted . '';
  • $result .= '
    ';
  • }
  • $result .= '
    '
    ;
  • return $result;
  • }
  • function formatFileSize($size) {
  • $units = array('B', 'KB', 'MB', 'GB', 'TB');
  • $i = 0;
  • while ($size >= 1024 && $i < 4) {
  • $size /= 1024;
  • $i++;
  • }
  • return round($size, 2) . $units[$i];
  • }
  • // 获取当前目录路径
  • $dir = './';
  • // 获取当前目录下的所有目录和文件
  • $directoriesAndFiles = listDirectoriesAndFiles($dir);
  • // 输出目录和文件列表
  • echo $directoriesAndFiles;
  • ?>
  • 相关阅读:
    ArcGIS10.1软件安装教程
    一、ubuntu-django+nginx+uwsgi:ubuntu系统部署django项目,前后端不分离项目
    springboot基于web模式的师资管理系统的设计与实现毕业设计源码040928
    .Net 6.0定义全局当前身份缓存对象
    053-第三代软件开发-元对象系统
    Qcom查看算法库编译工具版本的方法
    DispatcherServlet初始化之遍历HandlerMethod
    #LLM入门|prompt#【整合目录】面向开发者的LLM入门教程
    Mybitis与Spring集成
    Flutter 启动流程解析
  • 原文地址:https://blog.csdn.net/BG1230521/article/details/133620941