【问题标题】:List files in a directory with PHP and JavaScript [duplicate]使用 PHP 和 JavaScript 列出目录中的文件 [重复]
【发布时间】:2019-12-21 13:47:03
【问题描述】:

我正在尝试编写一个简单的脚本,其主要目的是列出服务器上目录中的所有文件并将其保存为数组。稍后客户端脚本会进行一些操作,例如“提取”文件扩展名、名称等。

现在我遇到了一个小问题。也就是说,脚本确实列出了指定目录下的所有文件,但返回的数据是 JavaScript 无法读取的。

let data = <?php 
  if ($handle = opendir('./share')) {
    while (false !== ($entry = readdir($handle))) {
      if ($entry != "." && $entry != "..") {
        echo "$entry ";
      }
    }
    closedir($handle);
  }
?>;

而返回的数据是这样的:

some_image.png other_text.txt meme.gif

可能每个人都知道,如果我们在任何地方使用 JavaScript,它都会崩溃…… 有什么方法可以将这段数据转换为如下所示的实际数组?

['some_image.png','other_text.txt','meme.gif']

【问题讨论】:

  • 不回显条目而是将其添加到数组中?还是glob()json_encode()
  • 我是 PHP 新手,你能举个小例子吗?我从来没有能够理解任何来自 php.net 的东西。我总是在这个网站外面看。
  • 遗憾的是它没有。我已经尝试了其中的大多数,但留下了一堆错误。此外,我的脚本需要能够处理该目录中可变数量的文件,扩展名为 any
  • 不可能 - this answer 应该可以正常工作。如果没有,我们需要看看你遇到了什么错误

标签: javascript php arrays


【解决方案1】:

扩展您的代码:将文件条目写入数组,而不是立即将它们写入 echo 。然后json_encode那个数组,最后echo它在你的&lt;script&gt;标签中

<?php
$files = array();
if ($handle = opendir('./share')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            $files[] = $entry;
        }
    }
    closedir($handle);
}
$json = json_encode($files);
// var_dump($json);
?>
<script>
let data = <?php echo $json ?>;
</script>

【讨论】:

  • 没问题,很高兴它有效
  • 由于 Windows 决定在共享任何文件时坚持使用数据包向我的网络发送垃圾邮件,因此我决定简单地使用我的 Raspberry PI 制作本地 HTTP/FTP 服务器,并制作一个简单的 HTML 界面来浏览文件。
猜你喜欢
  • 1970-01-01
  • 2011-04-19
  • 2014-11-08
  • 2018-06-08
  • 1970-01-01
  • 2017-05-01
  • 2013-03-24
相关资源
最近更新 更多