【问题标题】:Access to files on HDD from AngularJS application从 AngularJS 应用程序访问 HDD 上的文件
【发布时间】:2017-04-03 19:51:36
【问题描述】:

我有适用于 Tomcat 8.0.x 的 AngularJS (1.2.16) 应用程序我需要添加以下功能:在应用程序中创建一个新选项卡(没问题)并允许用户从先前实现的选择框中选择具体新选项卡,来自 HDD 的文件(给出了目录但在 Tomcat 之外)和预览(PDF 文件)。如何连接这两个世界?我也有后端。

我发现了非常相似的问题-Simplest way to serve static data from outside the application server in a Java web application,但我不明白如何在 UI 中获取来自给定目录的文件列表。有什么最佳实践吗?

编辑:我发现也可能重复,所以你建议提供 URL 下的所有文件?安全吗?它是唯一的解决方案吗?

【问题讨论】:

  • 我知道的唯一最佳实践是不允许通过应用服务器访问本地文件系统。出于安全原因。但如果你必须这样做,你链接的答案解释了如何去做。您必须按照说明定义您的 servlet 并连接到 web.xml 中的路径。比您有权访问该文件夹和子文件夹中的文件。请尝试一下,如果您有新问题回来。
  • 在“可能的重复”中写着“这样就可以通过example.com/files.... GlassFish/Payara 访问它们”但是如何编写返回所有文件列表的 servlet - 这就是核心问题。
  • “如何编写一个返回所有文件列表的 servlet”,这不是一个有效的问题,因为答案太宽泛而且充满了很多可能性。我可以给你的提示是:一旦你用你的自定义 servlet 配置了正确的文件夹,你就可以使用 java 来读取目录。这是普通的 java 看看这里:stackoverflow.com/questions/18616656/…
  • @MarioSantini 谢谢!您可以写一些答案,我将选择已解决。你的回答给了我解决方案。谢谢!!

标签: javascript java angularjs tomcat architecture


【解决方案1】:

安全注意事项

从应用程序服务器提供对文件系统文件夹的读/写访问权限始终是一种不好的做法。

应考虑是否可以从 Internet 访问 Web 应用程序。

如果我们需要处理这种情况,最好的办法是了解我们需要拥有和修改哪些信息,然后将这些信息包装在一个特定的 API 中,以便严格按照我们的需要工作。

或者我们可以采用一种操作方法,包括强化服务器和应以包含任何威胁的方式访问的文件夹。

解决方案部分

此答案是针对以下副本提出的:Simplest way to serve static data from outside the application server in a Java web application

但这部分只是解释了所要求的解决方案的一半。

这里的答案解释了如何从 Tomcat 中的自定义文件夹配置默认 servlet 的扩展:

你必须对conf/server.xml采取行动:

<Context docBase="/path/to/files" path="/files" />

在这里,您以 Tomcat 将访问的方式配置文件夹,并将其连接到 HTTP 请求(@987654322)可能请求的 path @)。

现在您需要配置 web.xml 以将特定 servlet 连接到此 path,以便能够处理文件夹内容。

一旦您的 servlet 和 Tomcat 正确配置,就可以访问文件夹和文件了。

这可以按照答案 Display list of files in webpage using servlet 中的说明来完成。

简而言之,您可以使用普通 java 冷访问该文件夹:

File filesFolder = new File(req.getSession().getServletContext().getRealPath("/files"));

然后使用 File.listFiles() 方法可以获取文件夹中的文件列表。

使用 File.listFiles(),您还可以添加过滤器,允许您隐藏不希望用户访问的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多