Spring Boot 之 ResourceHandlerRegistry 通过url直接访问本地服务器上指定路径的资源

一、添加pom依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <version>2.1.1.RELEASE</version>
</dependency>

二、配置WebMvcConfigurer,设置url访问静态资源映射

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

@Configuration
public class SongConfig implements WebMvcConfigurer {


    @Value("${songPic.path}")
    private String songPicPath;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //加载文件资源
        registry.addResourceHandler("/songPic/**").addResourceLocations("file:"+songPicPath);
    }
}

三、配置文件(application.properties)中配置访问的真实路径

四、在songPic文件夹中添加一个名为123.jpg的文件,通过http://ip:端口/项目基本路径/songPic/123.jpg 请求即可访问到该图片

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以通过在`application.yml`文件中添加以下配置来限制指定路径上传文件的大小: ```yaml spring: servlet: multipart: max-file-size: 10MB # 限制单个文件上传大小 max-request-size: 100MB # 限制整个请求上传大小 application: upload: max-file-size: 5MB # 指定路径下允许上传的最大文件大小 ``` 其中,`max-file-size`表示单个文件上传的最大大小,`max-request-size`表示整个请求上传的最大大小。`upload.max-file-size`表示指定路径下允许上传的最大文件大小。 接下来,需要在代码中指定需要限制大小的路径。例如,我们需要限制`/uploads`路径下的文件上传大小,可以在`application.yml`文件中添加如下配置: ```yaml spring: application: upload: max-file-size: 5MB ``` 然后,在代码中添加如下配置: ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Value("${spring.application.upload.max-file-size}") private String maxFileSize; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/uploads/**") .addResourceLocations("file:./uploads/") .setCachePeriod(0) .resourceChain(true) .addResolver(new PathResourceResolver() { @Override protected Resource getResource(String resourcePath, Resource location) throws IOException { Resource requestedResource = location.createRelative(resourcePath); long fileSize = requestedResource.contentLength(); if (fileSize > Long.parseLong(maxFileSize)) { throw new RuntimeException("File size exceeds limit"); } return requestedResource; } }); } } ``` 上述代码中,`addResourceHandlers`方法可以添加自定义的静态资源处理器。我们通过`addResourceHandler("/uploads/**")`指定需要处理的路径为`/uploads/**`,并通过`addResourceLocations("file:./uploads/")`指定实际文件存储的路径为`./uploads/`。在`addResolver`方法中,我们添加了一个自定义的资源解析器,用于检查上传文件的大小是否超过了限制。如果超过了限制,则抛出一个运行时异常。 这样,我们就可以限制指定路径下上传文件的大小了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值