springboot文件上传

文件上传

springboot默认封装了一个文件上传,MultipartAutoConfiguration自动装配了一个处理文件上传的处理器StandardServletMultipartResolver,在处理请求参数的时候,如果使用了@RequestPart,参数类型为MultipartFile,请求的Content-type为multipart/开头就会被处理。

@Bean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME)
@ConditionalOnMissingBean(MultipartResolver.class)
public StandardServletMultipartResolver multipartResolver() {
  StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();
  multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily());
  return multipartResolver;
}

StandardServletMultipartResolver处理器默认读取配置文件中的以spring.servlet.multipart开头的属性进行初始化,需要修改默认配置的话,在文件里配置就好。

@ConfigurationProperties(prefix = "spring.servlet.multipart", ignoreUnknownFields = false)
public class MultipartProperties {

	/**
	 * Whether to enable support of multipart uploads.
	 */
	private boolean enabled = true;

	//文件存储中间位置
	private String location;

	//文件最大值
	private DataSize maxFileSize = DataSize.ofMegabytes(1);

	请求最大
	private DataSize maxRequestSize = DataSize.ofMegabytes(10);

	/**
	 * 文件写入磁盘的阈值
	 */
	private DataSize fileSizeThreshold = DataSize.ofBytes(0);
}
spring:
  servlet:
    multipart:
      max-file-size: 5MB

测试

@SneakyThrows
@PostMapping("uploadFile")
public String uploadFile(@RequestParam("email") String email,
                         @RequestParam("nickName") String nickName,
                         @RequestPart("file") MultipartFile file,
                         @RequestPart("manyFiles") MultipartFile[] manyFiles) {
  log.info("email->{},nickName->{}", email, nickName);
  String fileName = file.getOriginalFilename();
  file.transferTo(new File(ClassUtils.getDefaultClassLoader().getResource("").getPath()
                           + File.separator + UUID.randomUUID() + fileName.substring(fileName.lastIndexOf("."))));
  Arrays.asList(manyFiles).stream().forEach((e) -> {
    try {
      e.transferTo(new File(ClassUtils.getDefaultClassLoader().getResource("").getPath()
                            + File.separator + UUID.randomUUID() + fileName.substring(fileName.lastIndexOf("."))));
    } catch (IOException ioException) {
      ioException.printStackTrace();
    }
  });

  return "success";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值