Springboot项目打成jar包,如何设置存储路径?并且上传的静态文件如何访问?

本文介绍了如何在Springboot项目中设置资源存储路径,将上传的文件保存到jar包同级目录的static/images/下,并配置HTTP访问权限,通过实现WebMvcConfigurer接口,允许访问static文件夹下的资源,尤其是file:static/的配置,使得可以通过http://ip:port/static/路径访问静态资源。
摘要由CSDN通过智能技术生成

Springboot项目打成jar包,如何设置存储路径?并且上传的静态文件如何访问?

第一步 设置资源资源存储路径

找到需要保存指定文件路径添加以下代码

//保存上传的资源文件路径,路径在部署jar包同级目录。
String path = System.getProperty("user.dir")+"/static/images/";
File dir = new File(path);
	if (!dir.exists()) {
	  dir.mkdirs();
	}
	// 文件上传后的路径
	File dest = new File(path + file1);
	file.transferTo(dest);

结果如下:
在这里插入图片描述

注:以上只是把资源存储到jar包同级目录下,经过以下操作步骤才能进行访问

第二步 设置http访问上传的静态资源文件

创建一个静态资源文件权限访问类,实现WebMvcConfigurer接口,并且在类中实现addResourceHandlers方法,代码如下:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 配置静态资源访问权限
 * @Author: lantf
 * @Date: 2021/6/18 14:32
 * @Version 1.0
 */
@Configuration
public class MySecurityConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/","file:static/");
    }
}

注 /static/** 代表有权限访问static文件夹下的资源,其中file:static/ 至关重要,只有配置了这句代码,才能使用http://ip:port/static/xxx 访问静态资源。 如何:http://127.0.0.1:8083/lzsystem/static/images/2021062011045713161.jpg

SpringBoot是一款快速开发框架,它集成了Spring框架、Spring MVC、Spring Data、Spring Security等模块,极大地简化了Java Web应用的开发和部署。然而,当我们将SpringBoot项目打成jar包后,可能会遇到无法获取/static下的静态资源文件的问题。 出现这种问题的原因是jar包文件不能像war包一样直接被Tomcat等Web容器所加载。SpringBoot应用作为jar包启动时,没有了Tomcat等容器,因此就无法访问静态资源文件了。 解决这种问题的方法有两种。 第一种方法是通过代码的方式让SpringBoot应用识别到static目录下的静态资源文件。我们可以在配置文件(application.properties or application.yml)加入以下配置: spring.web.resources.static-locations=classpath:/static/ 这样就可以让SpringBoot应用在启动时扫描class path下的/static目录,使其静态资源文件得到识别和加载。 第二种方法是使用SpringBoot的嵌入式Web容器。SpringBoot内置了Tomcat、Jetty等Web容器,这些容器会在SpringBoot应用启动时自动启动,并且自动加载静态资源文件。我们只需要在代码使用如下注解: @EnableWebMvc @Configuration public class MvcConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } } 上述代码片段的@EnableWebMvc注解表示开启WebMvc配置,@Configuration表示该类是Spring的一个配置类,MvcConfig类继承自WebMvcConfigurerAdapter并重写了addResourceHandlers方法,这个方法将“/static/**”的请求映射到classpath:/static/目录下。这样,在嵌入式Web容器启动SpringBoot应用时,静态资源文件就能被正确加载了。 总之,无法获取SpringBoot项目静态资源文件的问题,主要是由于jar包没有被Web容器所直接加载所致。采用上述两种方法,均可解决这种问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值