gpt4 book ai didi

javascript - 从 AngularJS 应用程序访问硬盘上的文件

转载 作者:行者123 更新时间:2023-11-28 22:50:41 24 4
gpt4 key购买 nike

我有在 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 下的所有文件?安全吗?这是唯一的解决方案吗?

最佳答案

安全注意事项

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

应考虑是否要从 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 请求中请求的路径 ( http://mytomcatserver/files/ ).

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

正确配置 servlet 和 Tomcat 后,就可以访问文件夹和文件了。

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

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

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

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

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

关于javascript - 从 AngularJS 应用程序访问硬盘上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40702880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com