菜鸟 springboot实现图片上传

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文件夹,用于保存图片,System.getProperty的参数参考于这篇博客

第二步:使得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的图片上传到本地的一个路径,并可以访问,如果有什么问题或者感觉哪边可以改进一下,欢迎提意见哦,每一个好的意见,我都会拿个小本本记下哦

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值