【问题标题】:Javascript: Listing File and Folder StructureJavascript:列出文件和文件夹结构
【发布时间】:2012-06-02 05:08:51
【问题描述】:

正如我所读到的,JavaScript 在客户端 PC 上修改文件并不容易。我正在开发基于 Web 的文件管理器,需要了解以下内容:

  • JavaScript 能否列出客户端 PC 上的文件和文件夹结构?
  • JavaScript 可以列出服务器上的文件和文件夹结构吗?

如果您的答案是否定的,Java Scipt 无法列出客户端或服务器的 C:\ 驱动器上的文件和文件夹,那么 CGI 脚本会是唯一的解决方案吗?

【问题讨论】:

    标签: javascript html web-applications


    【解决方案1】:

    这是一个杂物,但您可以求助于 java 小程序或可怕的 active-x 控件。

    【讨论】:

    • 您好,感谢您的回答。你提到了,这两种方法。 Java 需要安装 JRE,并且 active-x 控制限制使用仅限于 IE。请问有没有更方便的方法?
    【解决方案2】:

    浏览器 JS 读取客户端 PC 的文件:取决于

    出于安全原因,未经用户同意,您无法访问用户 PC 上的文件。

    这就是为什么在文件输入框<input type="file"> 和拖放区域周围创建FileReader API 的原因,因为整个想法是“在用户同意的情况下访问文件”。如果用户没有故意放置文件以供访问,您根本无法访问它。

    服务器端JS读取自己服务器的文件:是

    至于服务器,如果您的意思是使用 server-JS(NodeJSRhino)访问服务器,是的,您可以(否则它将如何提供网页服务?)。

    浏览器 JS 读取自己服务器的文件:取决于

    如果您有一个 API 可以从中读取文件,那么使用 JS从浏览器访问服务器就可以了。

    浏览器 JS 读取其他服务器的文件:是的,有一个问题

    要在没有某些 API 的情况下访问其他服务器的文件,您可以求助于创建运行 服务器端 的网络爬虫或网络蜘蛛(因为 @987654324 导致浏览器无法跨域@) 并向您的浏览器公开一个 API。

    但是:

    • 您无法抓取所有文件,因为某些文件可能会受到外部访问的限制。
    • 结构的公开外观可能与内部结构不同,尤其是在网站使用分段 url 方案时
    • 使用查询字符串生成页面的站点由于可能进行的排列数量多而不易被抓取,因此某些页面可能无法访问。

    【讨论】:

    • +1,嗨约瑟夫。比你详细的回答。你说:“如果你有一个 API 可以从中读取文件,那么使用 JS 从浏览器访问服务器是可行的。”。请您这么好心并建议一些 API 来列出服务器中的文件和目录结构,好吗?
    • @Bunkai.Satori 只是创建对可通过 GET/POST 请求调用的文件进行操作的方法。此外,您必须有某种用户访问控制来限制只有具有访问权限的用户才能访问您的服务器的文件。
    • 你的意思是创建一个 CGI 脚本,比如用 C++ 来通过 GET/POST 管理本地文件系统?
    • @Bunkai.Satori 我不知道 CGI,但是是的,一个服务器脚本,它通过 GET/POST 充当文件系统和浏览器之间的接口。 DropBox 就是一个例子,它允许用户通过互联网管理他们的在线文件。
    • 我明白了.. 谢谢。您会说哪种编程似乎最适合此目的?也可以用服务器端 JavaScript 来完成吗?
    【解决方案3】:

    CGI 也不是解决方案,因为它只能访问您服务器的文件系统,而不是访问您网站的客户端的文件系统。从 javascript 访问客户端文件系统的唯一方法似乎是 File API,显然是 not implemented by many browsers

    【讨论】:

    • 我了解安全原因。但是,有没有办法给用户一个他们可以轻松管理的磁盘空间区域?
    • @HunterMcMillen 哪个是?我不否认有一个,我只是想知道。
    • @panzi 如果浏览器允许实现可以更改客户端计算机上文件的 Javascript,那么窃取个人信息并将病毒注入客户端计算机将非常容易。可能还有更多原因,这就是我脑海中浮现的两个原因。
    • @HunterMcMillen 当然,它不会像这样工作。这一切都发生在沙盒目录结构中。浏览器无法访问 HD 上的任意文件。但是,如果您担心的是,实现可能有问题,并且可能有一种方法可以逃离沙箱:好的。
    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 2014-07-24
    • 2019-06-14
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多