一.问题描述
前端请求/下载图片和文件
二.解决思路
1、后端提供接口,将图片/文件以流形式返回给前端,太麻烦 ×
2、后端做映射,前端直接通过ip:port的方式访问,简单明了 √
三.解决方案
1、实现WebMvcConfigurer自定义配置映射路径(推荐,兼容性好):
@Configuration
public class ResourceConfiguration implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//addResourceHandler -> 对外暴露的访问路径,如例子为files文件下的所有资源(包括子文件夹)
registry.addResourceHandler("/files/**")
//addResourceLocations -> 映射文件放置的目录
//注意:jar包外部文件夹用file,jar包内部文件用classpath,例子用的是绝对路径
//File.separator会判断当前系统,然后处理为相应反斜杠(Windows和linux的反斜杠不一样)
.addResourceLocations("file:" + System.getProperty("user.dir") + File.separator + "files" + File.separator);
}
}
访问files文件夹下的子文件夹test的图片:
files文件夹下的子文件夹organize的图片:
文件结构:
2、集成WebMvcConfigurationSupport
https://www.cnblogs.com/jrjrzivvv/p/12741203.html
3、将文件放在默认映射路径中
https://www.cnblogs.com/luchangjiang/p/10805951.html
4、其他解决方案:通过配置yml
https://www.cnblogs.com/zhncnblogs/p/13468158.html
5、顺便提一下springboot1.X用的是WebMvcConfigurerAdapter类
参考资料:
https://blog.csdn.net/shijiujiu33/article/details/90183343