使用Javascript获取文件夹中的文件名列表

bev*_*anb 55 javascript

我的网站正在从/assets/photos/文件夹中提供大量图片.如何使用Javascript获取该文件夹中的文件列表?

Chr*_*son 56

当前代码将给出文件夹中所有文件的列表,假设它在服务器端要列出所有文件:

var fs = require('fs');
var files = fs.readdirSync('/assets/photos/');
Run Code Online (Sandbox Code Playgroud)

  • 我的意思是从客户端访问文件列表,抱歉不是更清楚. (5认同)
  • require() 仅支持 Node.js (4认同)
  • require()来自何处或在何处定义???您的代码会引发“未定义'require'”错误。您是否测试过代码?如果是这样,您是否可能错过了一些涉及“需要”的重要部分? (3认同)
  • @Apostolos正如描述中的OP所述,这需要是服务器端代码。您不能在浏览器中运行它。使用Node.js运行此脚本不会引发任何错误。 (2认同)
  • 这是一个好方法,但似乎没有直接回答问题。简单的答案是否定的,在客户端(浏览器)的 JS 中,没有直接的方法来获取服务器端文件夹/目录中的文件列表。 (2认同)

Sim*_*mar 27

不,Javascript无权访问文件系统.服务器端Javascript是一个完全不同的故事,但我猜你并不是那个意思.

  • 这不再是事实。File API是一回事。 (3认同)
  • @superluminary,那么如何使用该 API 来做到这一点呢? (2认同)
  • 如果您说必须使用库,那么这与说 JavaScript(普通)可以访问文件系统并不完全相同。 (2认同)

小智 12

要获取指定文件夹中的文件名列表,您可以使用:

fs.readdir(directory_path, callback_function)
Run Code Online (Sandbox Code Playgroud)

这将返回一个列表,您可以通过简单的列表索引(如file[0],file[1]等)来解析该列表。

  • 值得注意的是,这是仅适用于 Node.js 环境的解决方案 (5认同)
  • 问题是从客户端得到同样的结果 (2认同)

小智 8

我写一个文件dir.php

var files = <?php $out = array();
foreach (glob('file/*.html') as $filename) {
    $p = pathinfo($filename);
    $out[] = $p['filename'];
}
echo json_encode($out); ?>;
Run Code Online (Sandbox Code Playgroud)

在脚本中添加:

<script src='dir.php'></script>
Run Code Online (Sandbox Code Playgroud)

并使用files []数组

  • @2540625 那是 php,而不是纯 javascript。尽管你需要php并且它不能解决作者的问题,但如果你有php,它仍然是一个相当好的解决方案。 (3认同)
  • 这不是 JavaScript (3认同)
  • 那真是天才。 (2认同)
  • 未捕获的语法错误:意外的标记“&lt;” (2认同)

Nal*_*roc 7

对于客户端文件,您无法在用户的本地目录中获得文件列表。

如果用户提供了上传的文件,则可以通过其input元素访问它们。

<input type="file" name="client-file" id="get-files" multiple />


<script>
var inp = document.getElementById("get-files");
// Access and handle the files 

for (i = 0; i < inp.files.length; i++) {
    let file = inp.files[i];
    // do things with file
}
</script>
Run Code Online (Sandbox Code Playgroud)