我有一个用 Java + spring 框架编写的 Web 应用程序。使用的应用程序服务器是 tomcat。假设 Web 应用程序名称是“sample-webapp”。如果我在 example-webapp/resources/下创建一个符号链接(symbolic link),如下所示-
ls -l
.../sample-webapp/resources/temp-csv-location -> /tmp/csv-location
这里的“temp-csv-location”是一个符号链接(symbolic link)。
现在,如果我在 jsp 页面中引用此目录中的文件,类似于
<a href="http://localhost:8080/sample-webapp/resources/temp-csv-location/test.csv">Click</a>
它给了我一个 404 错误。我确认 test.csv 文件存在于/tmp/csv-location/中。我也确认了权限。在普通的 tomcat 用法中,我们可以在 context.xml 中添加“allowLinking=true”。
有没有办法在spring框架中做到这一点?
最佳答案
针对您的问题的另一种通用解决方案是编写一个 Servlet 来处理计算起始路径的所有请求,然后 Servlet 将通过解析其路径来处理文件的提供。
要设置 Servlet,您必须将其放入 web.xml
<filter>
<filter-name>csvFileDownloadServlet</filter-name>
<filter-class>edu.sharif.resource.CSVFileDownloadServlet</filter-class>
</filter>
<filter-mapping>
<filter-name>csvFileDownloadServlet</filter-name>
<url-pattern>/resources/temp-csv-location/*</url-pattern>
</filter-mapping>
然后您应该编写 edu.sharif.resource.CSVFileDownloadServlet 类。通过简单的搜索就可以找到解决这个问题的几种实现方式,例如:
关于java - Spring框架和tomcat - 如何启用以下文件夹符号链接(symbolic link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11274933/