springboot实现图片上传
其实在做第一次图片上传的时候,想到存放图片的第一个目录永远是在项目下,所以每一次,定位时总会定位到项目下,但是在Springboot下面上传图片的时候总是会自动的保存到test-classes文件夹下,导致每次上传的时候可以上传,但是却无法访问,我想像过调整路径,但是奈何技术有限,于是调整思维,想着,我找一个相对于当前项目下的地方存放图片,然后定位过去访问,想法有了,接下来就开始动手实现了:
第一步:定位到当前系统的某个路径下,并且自动创建某个文件夹
由于这个文件夹应该是,服务器运行之后便要自动的创建的文件夹,所以我去网上找了一些帖子和资料,最终找到了CommandLineRunner,
这是一个接口,我们可以继承这个接口,实现springboot数据的预加载
@Configuration
public class MyCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
//论坛图片的保存的地方
String s = System.getProperty("user.dir") + "/forumimage/";
// 初始化图片上传地址
File file = new File(s);
if(!file.exists()){
//创建图片保存的地址
file.mkdirs();
}
// 然后将值保存到图片静态类里面去
// System.out.println(s);
MyStaticValue.forumImagePath = s;
}
}
实现里面的run方法,使用System.getProperty的方法,使用参数user.dir,定位到当前项目下,并且新建forumimage文件夹,用于保存图片
第二步:使得Springboot能够访问到这个目录
在ssm的时候,我们可以配置springmvc配置文件,拦截请求访问本地的资源,Springboot中,有一个WebMvcConfigurer 这个接口,我们可以选择实现这个接口,实现里面的addResourceHandlers方法,在里面配置相关的信息:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("/**").addResourceLocations("classpath:/ ");
// registry.addResourceHandler("/ForumImage/**").addResourceLocations("file:"+MyStaticValue.forumImagePath);
String s = System.getProperty("user.dir") + "/forumimage/";
// 初始化图片上传地址
File file = new File(s);
if(!file.exists()){
//创建图片保存的地址
file.mkdirs();
}
registry.addResourceHandler("/ForumImage/**").addResourceLocations("file:"+s);
}
这样便可以实现Springboot的图片上传到本地的一个路径,并可以访问