【问题标题】:get a list of all folders in directory [closed]获取目录中所有文件夹的列表[关闭]
【发布时间】:2013-03-21 00:37:36
【问题描述】:

所以我有一个看起来像这样的文件系统:

Music
- 001
-- song.mp3
- 002
-- song.mp3
- 003
- 004
- 005
-- song.mp3
musicplayer.html
musicplayer.js

我很好奇是否可以获得所有文件夹名称的列表?

这个javascript,html5,甚至jQuery,我什么都安装不了。

【问题讨论】:

  • 停下来想一想...如果您可以访问任何服务器并使用javascript获取目录详细信息...服务器的安全性如何?你做不到

标签: javascript jquery html


【解决方案1】:

他的问题有道理(HTML5)


我很好奇是否可以获得所有文件夹的列表 名字?这个 javascript,甚至 jQuery,我什么都安装不了

只是不,但不是最后的答案!

JavaScript (JS) 是一种解释型计算机编程语言。它最初是作为 Web 浏览器的一部分实现的,以便客户端脚本可以与用户交互、控制浏览器、异步通信以及更改显示的文档内容.

JavaScript 有 3 种主要类型,即:

Client-Side JavaScript (CSJS) -- an extended version of JavaScript that enables the enhancement and manipulation of web pages and client browsers

Server-Side JavaScript (SSJS) -- an extended version of JavaScript that enables back-end access to databases, file systems, and servers

Core JavaScript -- the base JavaScript language

客户端 JavaScript (CSJS) 和服务器端 JavaScript (SSJS) 依赖于核心 JavaScript,没有它就无法工作。

JavaScript 和 DOM 为恶意作者提供了通过 Web 传递脚本以在客户端计算机上运行的可能性。浏览器作者使用两个限制来控制这种风险。首先,脚本在沙盒中运行,它们只能执行与网络相关的操作,不能执行创建文件等通用编程任务。其次,脚本受同源策略的约束:来自一个网站的脚本无法访问发送到另一个站点的用户名、密码或 cookie 等信息。大多数与 JavaScript 相关的安全漏洞都违反了同源策略或沙箱。

有一些通用 JavaScript 的子集 — ADsafe、安全 ECMA 脚本 (SES) — 可提供更高级别的安全性,尤其是在第三方创建的代码(例如广告)上。

我很好奇是否可以获得所有文件夹的列表 名字?使用 HTML5

HTML5 提供了 FileSystem API 可以解决你的渴求,至少知道 :)
在此处阅读教程:http://www.html5rocks.com/en/tutorials/file/filesystem/


另一个解决方案是使用丑陋的浏览器 Api,我从不推荐
最佳解决方案 是使用像php这样的服务器端语言

【讨论】:

  • 感谢您指出不要投反对票,我只是想问是否可能。我很想使用 php,但我不能安装任何程序。我尝试使用 html5 api,但似乎您必须以编程方式创建目录。问题是我不知道文件夹中有多少个文件夹或文件夹中的歌曲名称。这开始看起来我无法做到这一点。
  • @Robert E. McIntosh 不要使用 Browser Api 的任何方式,它们与其他的不兼容,您实际上需要什么?
  • 我需要获取目录列表和 javascript 文件所在的文件名。它适用于我通过名为 iWidgets 的 cydia 调整创建的小部件。
  • 所以基本上任何可以在 safari 或 google chrome 中工作的东西都可以。
  • “JavaScript (JS) 是一种解释型计算机编程语言”——它不是。它被编译。编译步骤不是由代码作者手动执行的。
【解决方案2】:

您是否正在尝试获取客户端的文件系统?如果是这样,出于安全原因,网络浏览器通常会禁止此类行为。

如果您想在您的网络服务器上列出内容,那么如果没有AJAX,这将无法完成,因为 JavaScript 在客户端计算机上运行。您需要一些服务器代码来为您列出目录,但这可能会带来潜在的安全风险。

我认为最好的办法是运行服务器端代码来列出目录,在客户端代码上这样做并不是最安全的。

【讨论】:

  • 它们将是 html 文件所在的位置。所以我不介意使用 ajax 或类似的东西,但问题是我只能访问 javascript 和 html。如果这是不可能的,那很好,我想我至少会问。
  • @RobertE.McIntosh 仅使用 Javascript 是不可能的,您必须添加一些服务器代码(PHP 或类似的东西)来列出音乐目录的内容并通过 AJAX 将其返回给您.
  • 该死。谢谢你。我很担心。
【解决方案3】:

如果您在客户端询问 Javascript,是的,我们可以使用 File API 在 Mozilla Firefox 中访问,我不知道其他浏览器。

https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

【讨论】:

  • 这是在客户端访问文件,我想访问javascript文件所在的文件。
  • 不做 -1 ,嘿,它们不是通用的解决方案,永远不要在这里推荐它们
【解决方案4】:

正如@Tariq 所说,您绝对可以使用一些服务器端代码(如 php)来完成此操作。您可以通过 ajax 提交与根目录相关的目录路径(查看 jquery $.post() @ http://api.jquery.com/jQuery.post/ )。

<?php
  if (isset($_POST['submit'])) {
  //capture post varibles, sanitizing of course.
  $dir = "";
  $dir = $_POST['input'];

    $dh  = opendir($dir);
    while (false !== ($filename = readdir($dh))) {
      $files[] = $filename;
    }
//now, do stuf with files

    sort($files);
    print_r($files);
  }

?>

这是输出:

Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)

希望这会有所帮助。

【讨论】:

  • 正如我所说的,它必须在 javascript、jquery 或 html 中。我无法安装任何东西,所以我无法使用 php。不过还是谢谢你。我认为这是不可能的。
  • HTML5 File API -- 您可能会感兴趣的一些 html5 优点。
  • 我一直在尝试使用它,但它似乎并没有真正查找目录,除非您使用 javascript 创建它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 2010-12-26
  • 2010-11-30
  • 2013-01-27
  • 1970-01-01
  • 2013-09-12
  • 2011-04-26
相关资源
最近更新 更多