springboot 自定义上传路径

项目中涉及上传文件时,如果将文件保存到项目路径,一旦重新部署项目就会出现之前上传的文件找不到的情况;因此我们需要将文件保存到项目以外的绝对路径,或者使用单独的服务保存文件,本文介绍如何配置 springboot,使上传的文件保存到项目以外的绝对路径

 

1、在 application.yml 文件中自定义相关配置

为了实现动态配置文件保存路径和文件访问路径,故在 application.yml 文件中添加配置

file:
  path: file/**    #文件访问路径
  address:  D://uploadFiles/  #文件保存路径

 

2、实现 WebMvcConfigurer 接口,重写 addResourceHandlers 方法

自定义 FilePathConfig 类,实现 WebMvcConfigurer 接口

package com.demo.config;

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 FilePathConfig implements WebMvcConfigurer{
	
	@Value("${file.path}")
	private String path;
	
	@Value("${file.address}")
	private String address;
	
	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler(path).addResourceLocations("file:" + address);
	}
}

至此,配置完成

 

3、测试

启动项目

在配置的 D:\uploadFiles 文件夹下保存两张图片

浏览器访问 http://localhost:8080/file/timg.jpg

浏览器访问 http://localhost:8080/file/a.jpg

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Spring Boot中,文件上传可以使用Spring MVC提供的MultipartResolver来实现。 首先,在pom.xml中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.4</version> </dependency> ``` 然后,在Controller中定义一个方法来处理文件上传请求: ``` @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { String fileName = StringUtils.cleanPath(file.getOriginalFilename()); String uploadDir = "uploads/"; FileUploadUtil.saveFile(uploadDir, fileName, file); return "File uploaded successfully!"; } ``` 其中,@PostMapping("/upload")表示接收POST请求,并且请求路径为/upload。 @RequestParam("file")表示接收名为file的文件参数。 FileUploadUtil.saveFile(uploadDir, fileName, file)是一个自定义的工具类,用于将文件保存到指定的目录中: ``` public class FileUploadUtil { public static void saveFile(String uploadDir, String fileName, MultipartFile multipartFile) throws IOException { Path uploadPath = Paths.get(uploadDir); if (!Files.exists(uploadPath)) { Files.createDirectories(uploadPath); } try (InputStream inputStream = multipartFile.getInputStream()) { Path filePath = uploadPath.resolve(fileName); Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING); } catch (IOException ioe) { throw new IOException("Could not save file: " + fileName, ioe); } } } ``` 最后,需要在application.properties中配置上传文件大小限制和临时文件存储路径: ``` spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB spring.servlet.multipart.enabled=true spring.servlet.multipart.file-size-threshold=2KB spring.servlet.multipart.location=/tmp ``` 以上就是Spring Boot中实现文件上传的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世君子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值