带 DocBase 的 Tomcat SymLink

标签 tomcat symlink

我需要在我的 webapp 之外上传文件,并可能在浏览器上提供这些文件。所以在看了很多帖子之后,我决定创建一个符号链接(symbolic link)。我有一个问题,因为我已经在 tomcat5/Catalina/loclahost/myApp.xml 中有一个上下文。 我向它添加了属性 allowlinking = true 和 override = true。 但是我无法使用浏览器访问我上传的文档。 我认为这两个重定向不能一起工作,但我不知道如何以任何其他方式做到这一点。 所以任何想法都会受到欢迎

最佳答案

如果您需要一个安全的地方来将文件上传到您的网络应用程序,您需要将它们完全放在任何网络应用程序的文档库之外——这包括使用符号链接(symbolic link)通过利用 DefaultServlet 将它们“挂载”到您的 URL 空间中以提供服务那些给你的。否则会使您面临 Tomcat 在取消部署 Web 应用程序时删除所有上传文件的风险。

如果您不必选择升级到 Tomcat 7.0(我强烈推荐),那么我建议您编写自己的 servlet,将其映射到/myapp/files/*,并让该 servlet 读取上传目录中的文件并将这些位提供给客户端。有一些方法可以让 DefaultServlet 为你做这件事(而不是在你自己的 servlet 中复制它的全部功能集),但它并不总是工作得很好并且在旧版本的 Tomcat 中可能根本不起作用,因为 DefaultServlet 假定它映射到“/”而不是“/files”之类的东西。

关于带 DocBase 的 Tomcat SymLink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10682505/

相关文章:

java - Apache FileUtils.isSymlink 和 Java7 的 Files.isSymbolicLink() 之间是否存在已知差异?

java - 尝试在 Tomcat 中部署 GWT 项目以有问题的类错误结束

java - 使用 Liferay 6.1 在 Tomcat 7 环境中设置 JNDI

javascript - CSS(JavaScript)是否在 DOM 元素之间有类似符号链接(symbolic link)的东西来防止使用媒体查询重复内容?

tomcat - 使用符号链接(symbolic link)作为 Tomcat webapp 的基本目录

perl - 为什么 File::Find 不处理我损坏的符号链接(symbolic link)?

java - 删除java中的符号链接(symbolic link)

java - Tomcat 没有在 Eclipse 中启动

tomcat - 如何在没有重定向的情况下在 Tomcat 中同时启用 HTTP 和 HTTPS?

java - 如何从 context.xml 注入(inject)值