基于 web 访问 tomcat 目录之外的文件列表

Posted

技术标签:

【中文标题】基于 web 访问 tomcat 目录之外的文件列表【英文标题】:web based access to a list of files outside tomcat directory 【发布时间】:2009-08-25 14:43:16 【问题描述】:

我有一个用例,我需要向用户显示一些日志文件列表,单击每个日志文件时,它应该打开一个新窗口来显示该特定日志文件的内容。

环境是Java/Tomcat。这些文件可能驻留在 tomcat 之外的目录中。

谁能告诉我,最好的方法是什么...?

非常感谢, 桑托什

【问题讨论】:

【参考方案1】:

在众所周知的位置设置一个配置文件,以便安装 webapp 的人准确描述可以浏览的目录。您绝对不希望 webapp 的用户能够浏览任何目录。

然后,您可以选择在页面加载时或在单独的线程中扫描配置的目录。如果在单独的线程中,webapp 只需要显示后端线程保持填充的任何列表的当前内容。

为每个文件使用某种唯一 ID。你不应该使用文件名,除非你准备好进行各种清理和检查 webapp 的用户没有提交到你服务器上其他位置的路径并且其中的字符是安全的。唯一的 ID 号可以让您查找(例如在地图中)用户想要查看的文件。

最后,显示文件就像读/写一样简单,但您可能应该采用流式方法,而不是尝试一次读取整个文件,然后通过连接将其转储。

如果您不打算格式化文件,您可能应该将内容类型设置为“text/plain”(默认为“text/html”,可能无法正常显示)。

如果你想格式化它,你需要自己弄清楚如何去做。

【讨论】:

感谢乔纳森,帮助了...:-) 你有什么想法吗,如何在 java.. 中也保留格式? 通过将内容类型设置为“text/plain”,格式将被保留。浏览器可能会将其显示为纯文本文件。如果您想要更好的格式,您需要增加打开/关闭 html 和正文标记,以及每行的段落标记或换行标记。或者,更奇特的是,您可以将这些行分解成它们的组成部分并将它们放入一个表格中(假设一行中有多个部分,例如时间戳、优先级和消息)。

以上是关于基于 web 访问 tomcat 目录之外的文件列表的主要内容,如果未能解决你的问题,请参考以下文章

tomcat配置管理:基于多实例的tomcat配置管理

shiro 如何配置到tomcat应用上

PHP - 访问 Web 根目录之外的文件的安全性

Spring:直接访问并提供网站目录之外的图像

Servlet与Tomcat运行示例

Jetty配置虚拟目录,实现把web项目发布到自定义目录,指定指定上下文访问;jetty编码修改