Spring get files and images from external folder on disk, outside webapps?
Solution 1
Use the spring mvc support for static resources, its location
attribute is an Spring Resource
, so you could use file:
prefix
<resources mapping="/resources/**" location="file:/my/external/directory/" />
or
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("file:/my/external/directory/");
}
}
@See Spring Reference Chapter 6.4 The ResourceLoader for a table that list all prefixed for resources
Solution 2
In my case I placed js and css resources in webapp and images in e://images/
.
For this case I use two mvc:resources
mapping
<mvc:resources mapping="/resources/**" location="/resources/"/>
<mvc:resources mapping="/images/**" location="file:e://images/"/>
And locate the image of e: > images > abc.jpg using ....
<img src="../images/abc.jpg"/>
You could try also <img src="/images/abc.jpg"/> or <img src="images/abc.jpg">
(If not work)
The css/js linked under webapp > resources > js > xyz.js like below.
<script type='text/javascript' src='../resources/js/xyz.js'></script>
Edgar
Updated on June 18, 2022Comments
-
Edgar almost 2 years
I have webproject which has images inside src/main/webapp folder. I would like to place images in different folder on the disk. But I have no idea how to manage requests to reach this images. Should I create some kind of
httpServlet
like shown here: http://balusc.omnifaces.org/2007/07/fileservlet.htmlOr as I use Spring MVC with java configuration, there is more suitable and simpler way.
Looking forward for your suggestions.
-
techhunter almost 7 yearsHi, I have tried the above. Does not work with any of the syntax combinations. Getting 404 error. This is what I am adding in my dispatcher-servlet.xml file <mvc:resources mapping="/imagesa/**" location="file:/D://itm_img/" />
-
Mr. Mak almost 7 years@techhunter try with the exact slash from my reference of location. I see you use an extra slash before your drive name (/D). Please remove extra slash and lower case of drive name.
-
techhunter almost 7 yearsMany thanks for your response. The avbove one worked me after changing the extension of image from ".jpg" to ".JPG". upvoted the answer.
-
Mr. Mak almost 7 years@techhunter Thanks for vote. By the way you can add many more resources mapping and location in your xml.
-
ThivankaW almost 3 yearsHi how to access this image from browser.