【问题标题】:Getting all the file names in a specific directory using Javascript使用 Javascript 获取特定目录中的所有文件名
【发布时间】:2018-07-27 12:47:20
【问题描述】:

纯 JavaScript 新手 :)

我需要的是一个 函数 来获取目录中的所有文件名(我们称之为结果),该目录与我的 html 文件位于同一位置。

该函数可以返回包含文件名的数组,或者可以将结果存储在全局变量中。

问候!

编辑感谢大家的回答和信息。我真的不知道我必须使用客户端语言:)

【问题讨论】:

  • 您使用哪种服务器端语言?
  • @TAHASULTANTEMURI 我只使用 html 和 javascript。我只有 1 个 .html 文件。一切都在其中完成。
  • 您不能在客户端执行该操作,因为 JS 无法访问文件系统。您将需要服务器端处理
  • @Un_NatMenDim 客户端脚本无法读取服务器目录中的文件,这是安全问题,因此您需要任何服务器端语言才能完成。

标签: javascript filenames


【解决方案1】:

我看到了一个节点答案;这是您可以在 PHP 中执行的操作;

创建一个名为“files.php”的新文件,并将以下代码放入其中:

<?php
    // Specify the directory to scan for files
    $dir    = '/';
    // Store the scandir results in a variable
    $files = scandir($dir);
    // Encode the array in JSON and echo it
    echo json_encode($files);
?>

保存并上传到你要返回文件的目录,确保你指定了文件路径(你可以用需要的路径修改$dir);

现在您可以使用 JQuery 来创建对我们创建的 files.php 文件的 GET 请求并将数据返回给客户端,

<script>
    $.get( "files.php", function( data ) {
          console.log(data);
        });
</script>

您将在控制台中看到返回的 JSON,其中包含来自 scandir 结果的所有文件名;您现在可以使用这些来推送到您的 UI 等中。

【讨论】:

    【解决方案2】:

    您正在尝试使用 JavaScript 访问目录。可能您以前使用服务器端语言(Java、Python 等)这样做过。

    但这在 JavaScript 中是不可能的,或者说 JavaScript 不允许这样做。

    原因很简单。 Javascript 在您的浏览器上运行,想象一下我是否可以编写在您的浏览器上运行并访问您的目录的代码。我可以从字面上阅读您计算机上的所有内容。

    这很荒谬。不是吗?所以根本不可能。

    更新:在编写上述答案时,我没有考虑使用 Node.js 的服务器端 javascript,而只关注浏览器上的 javascript。如果您在服务器端使用 javascript,那么是的,Node 的 FileReader 模块应该允许您这样做。

    虽然它是 2 年前的答案,但仍然感谢 @SQB 指出这一点。

    【讨论】:

    • 服务器端的javascript怎么样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2021-06-08
    相关资源
    最近更新 更多