目录
一、编写配置类实现WebMvcConfigurer接口
@Configuration
public class HttpConverterConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/file/**").addResourceLocations("file:"+"D:\\data\\img\\");
}
}
配置完以后我们便可以通过 localhost:8080/file/ 来访问本机 D:\data\img\ 目录下的图片。
例如 D:\data\img\test.jpg 可以通过 localhost:8080/file/test.jpg 来访问。
注意:localhost:8080要改成自己的SpringBoot项目运行的IP地址和端口号。
二、进阶
@Configuration
public class HttpConverterConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
var file = new File("");
String filePath = null;
filePath = file.getCanonicalPath() +"\\data\\";
registry.addResourceHandler("/file/**")
.addResourceLocations("classPath:/data/","file:"+filePath);
}
file.getCanonicalPath()是获取当前SpringBoot项目在本机上的绝对路径
file.getCanonicalPath() +"\\data\\"是SpringBoot项目中的data目录
如图:
配置完以后我们便可以通过 localhost:8080/file/ 来访问SpringBoot项目中data目录下的图片。
注意:
1.在Java中,var
关键字是在Java 10中引入的新特性(使用Java8的同学把var改成File即可)。它允许在声明局部变量时,通过类型推断来初始化变量,从而使代码更加简洁和易读。需要注意的是,var
关键字只能用于局部变量的声明,不能用于成员变量、方法参数、返回值等其他地方。
2."classPath:/data/"是指将资源文件放在classpath下的data文件夹中。这样做的好处是,在程序打包成jar包后,资源文件也会被打包进去,可以保证程序的可移植性和稳定性。如果不加"classPath:/data/",则只会在指定的文件路径下查找资源文件,如果程序打包后移动到其他位置,可能会找不到资源文件,导致程序出错。