【问题标题】:Javascript list files relative to root相对于根目录的 Javascript 列表文件
【发布时间】:2019-04-13 08:00:31
【问题描述】:

这是一个离线应用程序。

html 中,我们可以访问与html 页面相关的文件。例如:

  • <script src="scripts/jquery-3.3.1.min.js"></script>
  • <link rel='stylesheet' href='styles/style.css'>
  • <img src='./images/file1.jpg'/>

如果我在/images 目录中有很多图像,有没有办法使用Javascript 列出目录中的所有图像,或者我需要对图像名称进行硬编码?

我专门要求使用 Javascript 并且不使用 Node,直接从 Chrome 运行文件。

【问题讨论】:

标签: javascript html ecmascript-6 filepath


【解决方案1】:

通常客户端无权访问服务器的目录树。这意味着任何客户端 javascript 都无法列出目录树。

如果不存在索引文件,您可以配置 apache 以列出文件树,但通常不赞成这样做。

如果您(不同意我的建议)想要这样做,您可以配置 apache 以列出文件,然后使用 JavaScript 获取文件列表。

更好的方法是使用服务器端代码(Node.js 服务器、PHP 等),它可以访问文件系统并提供文件列表。

仅限本地应用程序

Javascript 通常无法访问本地资源,并且在尝试获取正常资源时会抛出 CORS 错误。 (无论您是否已经在本地目录中,都会引发 CORS 错误。)如果没有网络服务器,这几乎是不可能的。

【讨论】:

  • 请重新阅读问题,特别是最后一行。这是一个仅限客户端的应用程序,离线使用,没有服务器。
  • 这是一个内部工具,只能在 1 台 PC 上离线使用。我没有使用 apache 或任何东西来提供文件。我直接在 Chrome 中打开 htmljs
  • @IshouldchangemyUsername 我明确地将我的答案扩展为仅限本地页面。
  • (意味着在这种情况下您应该选择硬编码名称)
【解决方案2】:

尝试运行chrome.exe --allow-file-access-from-files

通过运行上面的命令行,它将启用 http 调用:

$.get("file:///url", function(data) {})

注意数据是返回字符串。 如果您将其附加到您的 html 中,它将显示 directory

【讨论】:

    【解决方案3】:

    手动 - 除非你使用网络服务器(你不需要安装一个,有很多工具可以为单个目录提供服务,例如 PHPPython 内置 -在服务器中)。

    但是编码是的:您无法从 javascript 访问本地文件系统,但如果您在导航栏中键入 (file://) url 或点击指向的链接,您的浏览器可以它。

    如果链接浏览器在远程页面(来自网络服务器)中拒绝它们,而不是来自已经在本地的文件(否则您无法看到网页的下载版本)。

    我从未测试过绝对路径,但(我认为)如果您对该目录有权限,它应该可以工作。

    如果没有,则存在允许打开该链接(如果用户接受)的浏览器扩展,例如 this one for Firefox

    问题是,正如我所说,您需要手动将链接放在页面中,如果链接太多,则可能需要一些时间,除非您习惯了真正的编辑器,例如 Vim,或者至少,您能够使用您喜欢的任何编程语言生成它。

    【讨论】:

      猜你喜欢
      • 2016-11-24
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 2021-05-31
      • 2021-07-04
      • 2011-05-27
      • 2017-08-09
      • 1970-01-01
      相关资源
      最近更新 更多