【问题标题】:Can I use Javascript to get a file directory list?我可以使用 Javascript 获取文件目录列表吗?
【发布时间】:2014-11-26 19:45:21
【问题描述】:

我正在使用客户端 Javascript,并希望获取一个文件夹中所有文件的列表,我认为该文件夹与我的 .html 文件托管在同一台服务器上。我对术语非常不熟悉,所以如果我不准确或完全错误,我提前道歉。

我目前使用d3.text("js/data/nodes#.csv", "text/csv", someFunction) 加载要使用的数据文件。我认为由于我想要的所有文件名都以相同的方式模板化,我可以通过遍历所有可能的数字来破解解决方案,并且只获取有效调用的文件名,如下所示:

function getDirList() {
    var possiblePathsList = something predetermined;
    var directoryList = [];

    possiblePathsList.forEach(function(path){
        if (isPath(path)) { directoryList.push(path); }
    });

    return directoryList;
}

function isPath(path){
    d3.text(path, "text/csv", function(data){   
        return (data !== null);
    });
}

因为我可以用这种非常垃圾的方式得到一个列表,所以我认为一定有一些(更多,更多)优雅的方法来实现我的目标。这可能吗?

【问题讨论】:

  • 不是开箱即用的!请记住,您正在向实现端点的服务器发出 HTTP 请求,在这种情况下提供静态文件。如果您想要目录列表,您拥有的服务器必须实现目录列表端点。什么是服务器软件或您的服务器?阿帕奇,快递(nodejs),...???

标签: javascript csv d3.js directory


【解决方案1】:

根据定义,如果您使用的是客户端 javascript,则它无权访问服务器的文件夹结构。您可以编写一个单独的 ajax 调用或具有服务器端脚本(以任何语言)的东西,该脚本将通过目录并将它们打印到一个 json 文件中,然后您可以在那里使用您的 javascript 进行处理。像这样的:

ajax.php:

$directory = "temp/";

$dir = opendir($directory);

$structure = array();

while($file = readdir($dir)){
  $structure[] = $file;
}

print json_encode($structure);
exit();

然后你将有一些 javascript 调用该脚本并通过 json 文件进行解析

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多