SpingBoot2.x文件上传:failed to convert java.lang.String to org.springframework.util.unit.DataSize

简介: SpingBoot2.x文件上传:failed to convert java.lang.String to org.springframework.util.unit.DataSize

问题现象:

SpringBoot项目由1.5.x升级到2.x,文件上传启动报错


配置文件

#文件上传路径 linux配置路径
spring.servlet.multipart.max-file-size=50Mb
spring.servlet.multipart.max-request-size=50Mb
file.upload.realpath=D:/csizgcardmanage/files

报错信息

Failed to bind properties under 'spring.servlet.multipart.max-request-size' to org.springframework.util.unit.DataSize:
    Property: spring.servlet.multipart.max-request-size
    Value: 50Mb
    Origin: class path resource [application-dev.properties]:36:43
    Reason: failed to convert java.lang.String to org.springframework.util.unit.DataSize
Action:
Update your application's configuration

原因分析:

转换为Long型的数值

  /**
   * Obtain a {@link DataSize} representing the specified number of megabytes.
   * @param megabytes the number of megabytes, positive or negative
   * @return a {@link DataSize}
   */
  public static DataSize ofMegabytes(long megabytes) {
    return new DataSize(Math.multiplyExact(megabytes, BYTES_PER_MB));
  }

通过源码分析,我们知道,文件上传的数值,需要是Long型

spring.servlet.multipart.max-file-size=50000000


单位的英文全大写(推荐)

带单位的字符串是支持的,不过单位的英文貌似必须写全而且是全大写,比如5MB、5KB、5B(5)这样,DataSize有个parse(CharSequence text)方法

  /**
   * Obtain a {@link DataSize} from a text string such as {@code 12MB} using
   * {@link DataUnit#BYTES} if no unit is specified.
   * <p>
   * Examples:
   * <pre>
   * "12KB" -- parses as "12 kilobytes"
   * "5MB"  -- parses as "5 megabytes"
   * "20"   -- parses as "20 bytes"
   * </pre>
   * @param text the text to parse
   * @return the parsed {@link DataSize}
   * @see #parse(CharSequence, DataUnit)
   */
  public static DataSize parse(CharSequence text) {
    return parse(text, null);
  }


通过源码分析,带单位的字符串是支持的,不过单位的英文貌似必须写全而且是全大写,比如5MB、5KB

spring.servlet.multipart.max-file-size=50MB

 



目录
相关文章
|
1月前
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
438 1
|
6月前
|
搜索推荐 Java 开发者
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
【5月更文挑战第14天】org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
537 1
|
1月前
|
Java
java 文件上传和下载
java 文件上传和下载
21 0
|
3月前
|
Java 编译器
Error:java: Compilation failed: internal java compiler error
Error:java: Compilation failed: internal java compiler error
97 1
|
4月前
|
Java
java 文件上传 :MultipartFile 类型转换为file类型
java 文件上传 :MultipartFile 类型转换为file类型
169 9
|
4月前
|
缓存 前端开发 Java
在Java项目中实现高性能的文件上传下载
在Java项目中实现高性能的文件上传下载
|
4月前
|
前端开发 安全 Java
如何在Java中实现高效率的文件上传和下载
如何在Java中实现高效率的文件上传和下载
|
5月前
|
数据采集 Java Linux
Java异常之【sun.security.validator.ValidatorException: PKIX path building failed: sun.security...】
Java异常之【sun.security.validator.ValidatorException: PKIX path building failed: sun.security...】
106 0
Java异常之【sun.security.validator.ValidatorException: PKIX path building failed: sun.security...】
|
4月前
|
缓存 安全 Java
使用Java实现高性能的文件上传下载服务
使用Java实现高性能的文件上传下载服务
|
4月前
|
Java Apache UED
如何在Java中实现文件上传?
如何在Java中实现文件上传?

热门文章

最新文章