当前位置: 首页 > 知识库问答 >
问题:

如何使用嵌入式tomcat在spring boot中增加文件大小上传限制

梁丘权
2023-03-14

“超出最大上载大小;嵌套异常为java.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.impl.FilesizeLimitExprojededException:字段文件超出其最大允许大小1048576字节。”

我已经在我的文件中尝试了以下代码,但每次我都得到错误

1.申请。财产

spring.servlet.multipart.FileSizeThreshold=100MB

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

spring.servlet.multipart.max-request-size=100MB

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");
    }
}

但每次我都有同样的例外。

共有1个答案

符棋
2023-03-14

除了comment,我建议为工厂创建@beanMultipartConfigurationElement,这基本上应该覆盖TomCat端的其他限制。

java prettyprint-override">@Bean
public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    factory.setMaxFileSize(DataSize.ofBytes(100000000L));
    factory.setMaxRequestSize(DataSize.ofBytes(100000000L));
    return factory.createMultipartConfig();
}

这里datasize的类型为org.springframework.util.unit.datasize

参考https://github.com/spring-projects/spring-boot/issues/11284

 类似资料:
  • 我想增加可以上传的。 在网上做了一些研究后,我发现你必须编辑文件'nginx.conf'。 我目前可以访问该文件的唯一方法是通过遍历Putty并输入命令: 这将打开文件,但我现在有两个问题: 如何编辑此文件 我在网上发现,您必须添加以下代码行:

  • 我有一个通过API rest POST请求上传文件的脚本。我只能上载大小小于1048576的文件 错误是 也许有人知道如何增加这个尺寸? 非常感谢。

  • 问题内容: 我得到这个错误说 上传大约30MB的视频时, 这是设置代码 不确定如何设置maxFieldsSize属性,需要一些帮助!!! 问题答案: Express使用连接中间件,您可以使用以下命令指定文件上传大小 连接限制中间件

  • 我犯了个错误 当上传一段大约30MB的视频时, 这里是设置代码 我不知道如何设置maxFieldsSize属性,需要帮助!!!

  • 我有时会在pom中看到以下声明。xml。。。 如您所见,sping-boo-starter-web被声明为tomcat-embed-jasper。 是不是sping-boo-starter-web已经有一个嵌入式tomcat了?为什么一些开发人员仍然声明tomcat-embed-jasper以及boot-starter-web?还是有什么原因?

  • 问题内容: 我有一个上传表单,正在检查文件大小和文件类型,以将上传的文件限制为2 MB,以及.pdf,.jpg,.gif或.png文件类型。我的目标是在用户违反这些规则之一的情况下向他们显示警报消息。 有四种方案: 正确的尺寸/正确的类型(工作中) 正确的尺寸/不正确的类型(工作中) 尺寸/类型 不 正确( 不起作用 ) 不正确的大小/ 不正确的 类型( 不起作用 ) 使用我当前的代码,即使文件类