【发布时间】:2020-06-19 05:47:07
【问题描述】:
我正在尝试使用我的 Spring Boot API 上传文件。当我使用小文件(小于 1 MB)时,该功能工作正常,但是当我上传大文件时,它给了我一个异常。我正在使用嵌入式 Tomcat 服务器。
“超出最大上传大小;嵌套异常是 java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: 字段文件超出了其最大允许大小 1048576 字节。”
我在我的文件中尝试了以下代码,但每次我都收到错误
1.应用程序.property
server.tomcat.max-swallow-size=100MB
server.tomcat.max-http-post-size=100MB
spring.servlet.multipart.enabled=true
spring.servlet.multipart.fileSizeThreshold=100MB
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
我也试过了
spring.servlet.multipart.maxFileSize=100MB
spring.servlet.multipart.maxRequestSize=100MB
2。爱人是我的文件上传代码
public RestDTO uploadFile(MultipartFile file, String subPath) {
if (file.isEmpty()) {
return new RestFailure("Failed to store empty file");
}
try {
String fileName = new Date().getTime() + "_" + file.getOriginalFilename();
String filePath = uploadPath + subPath + fileName;
if (Objects.equals(file.getOriginalFilename(), "blob")) {
filePath += ".png";
fileName += ".png";
}
File uploadDir = new File(uploadPath + subPath);
if (!uploadDir.exists()) {
uploadDir.mkdirs();
}
FileOutputStream output = new FileOutputStream(filePath);
output.write(file.getBytes());
LOGGER.info("File path : " + filePath);
MediaInfoDTO mediaInfoDTO = getThumbnailFromVideo(subPath, fileName);
String convertedFileName = convertVideoToMP4(subPath, fileName);
System.out.println("---------------->" + convertedFileName);
return new RestData<>(new MediaDetailDTO(mediaInfoDTO.getMediaPath(), convertedFileName,
mediaInfoDTO.getMediaType(), mediaInfoDTO.getMediaCodec(), mediaInfoDTO.getWidth(),
mediaInfoDTO.getHeight(), mediaInfoDTO.getDuration()));
} catch (IOException e) {
LOGGER.info("Can't upload file: " + e.getMessage());
return new RestFailure("Failed to store empty file");
}
}
但每次我都遇到同样的异常。
【问题讨论】:
-
你使用的是哪个版本的 Spring Boot
-
我使用的是spring boot 2.1.7
-
spring.servlet.multipart.max-file-size和spring.servlet.multipart.max-request-size仅适用于 Spring Boot 2.1.7。尝试将它们都设置为 -1(基本上无限制) -
我使用了 spring.servlet.multipart.max-file-size=-1 和 spring.servlet.multipart.max-request-size=-1。还是不行
-
用正确的字节大小更新答案
标签: spring spring-boot spring-mvc embedded-tomcat