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

IT技术 javascript
2021-02-09 10:05:23

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

6个回答

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

var fs = require('fs');
var files = fs.readdirSync('/assets/photos/');
这是一个好方法,但似乎没有直接回答问题。简单的答案是否定的,在客户端(浏览器)的 JS 中,没有直接的方法来获取服务器端文件夹/目录中的文件列表。
2021-03-20 10:05:23
require() 仅支持 nodejs
2021-03-22 10:05:23
@Apostolos 正如描述中的 OP 所言,这需要是服务器端代码。你不能在浏览器中运行它。使用 Node.js 运行此脚本不会引发任何错误。
2021-03-29 10:05:23
我的意思是从客户端访问文件列表,抱歉不太清楚。
2021-04-02 10:05:23
require() 来自哪里或定义在哪里???您的代码产生“'require'未定义”错误。你测试过你的代码吗?如果是这样,您是否可能错过了一些涉及“要求”的重要部分?
2021-04-12 10:05:23

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

@jtheletter API 在服务器上运行,因此您可以使用在服务器上运行的任何堆栈。如果那是 Node,那就是 fs.readdir。
2021-03-15 10:05:23
这不再是事实。文件 API 是一回事。
2021-03-16 10:05:23
@superluminary,那么如何使用该 API 做到这一点呢?
2021-04-05 10:05:23
如果您说必须使用库,那与说 JavaScript(vanilla)可以访问文件系统并不完全相同。
2021-04-07 10:05:23

我写了一个文件dir.php

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

在您的脚本中添加:

<script src='dir.php'></script>

并使用 files[] 数组

或者,如果要列出所有文件,请使用*.*或使用 scandir 来保留文件扩展名,$out = scandir("."); echo json_encode($out);
2021-03-15 10:05:23
@2540625 那是 php,而不是纯 javascript。尽管你需要php并且它没有解决作者的问题,但如果你有php,它仍然是一个很好的解决方案。
2021-03-27 10:05:23
未捕获的语法错误:意外的标记“<”
2021-04-03 10:05:23
这不是 JavaScript
2021-04-03 10:05:23
你如何用 javascript 调用/使用 files[] var?
2021-04-09 10:05:23

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

如果用户提供了上传的文件,您可以通过他们的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>

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

fs.readdir(directory_path, callback_function)

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

最好注意这是仅适用于 Node.js 环境的解决方案
2021-03-13 10:05:23