我有Spring MVC应用程序,在我的JSP中我有一个表单,它将文件上传到我的本地Tomcat服务器到目录“C:/apache-tomcat-7.0.56/photos”。
这是我的Tomcat文件结构:
C:\
apache-tomcat-7.0.56\
bin\
conf\
lib\
logs\
photos\ <-- I WANT TO READ FILES FROM THAT FOLDER
photo1.jpg
photo2.jpg
temp\
webapps\
myapp\ <-- MY SPRING APPLICATION
resources\
WEB-INF\
怎么做?我无法通过网址'localhost:8080 / photos'访问它们。这些文件的url路径是什么?我知道我可以通过这样的本地驱动器的绝对路径来做到这一点:
<img src='C:\apache-tomcat-7.0.56\photos\photo1.jpg' />
但我想通过服务器网址阅读。
修改 我无法将文件上传到我可以轻松读取文件的webapp / resources目录,但是当我重新部署应用程序时,文件将被删除。
答案 0 :(得分:0)
为了让Tomcat在浏览器中提供图像,需要知道可以提供此目录中的文件。您需要更新Web服务器配置。有很多方法可以解决它。其中一些是:
答案 1 :(得分:0)
您可以访问静态资源,就好像它们属于同一个Web应用程序一样。您所需要的只是配置对静态资源的访问权限并使用img
标记中的相对路径:
基于XML的配置
<mvc:resources mapping="/photos/**" location="file:///c:/apache-tomcat-7.0.56/photos/" />
基于Java的配置
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
registry.addResourceHandler("/photos/**").addResourceLocations("file:///C:/apache-tomcat-7.0.56/photos/");
}
在img
标记中:
<img src="<c:url value="/photos/photo1.jpg" />">
<img src="${pageContext.request.contextPath}/photos/photo1.jpg">
答案 2 :(得分:0)
简单快捷的方式。
System.getenv("CATALINA_HOME") + "/webapps/your project name/images
Tomcat无法在没有CATALINA_HOME的情况下工作,因此我们无需任何其他配置文件即可使用它。