返回

浅析SpringBoot 2:改了配置,文件上传限制还是100k?背后原因你都知道了

后端

SpringBoot 2中文件上传大小限制的解析与解决

在SpringBoot 2中,我们经常需要处理文件上传,并对文件的大小进行限制。通过配置spring.servlet.multipart.max-file-sizespring.servlet.multipart.max-request-size这两个属性,我们可以分别限制单个文件的大小和整个请求的大小。然而,一些用户发现,即使修改了这两个属性的值,重启服务后,上传文件的大小限制仍然保持为100k。这让人感到困惑和沮丧。

根源剖析:配置文件中的文件大小限制为何不奏效

要解决这个问题,我们必须深入了解这两个属性的作用。

  • spring.servlet.multipart.max-file-size: 此属性限制单个文件的大小。无论上传多少个文件,只要其中任何一个文件的大小超过此属性的值,就会引发错误。
  • spring.servlet.multipart.max-request-size: 此属性限制整个请求的大小。也就是说,如果上传多个文件,所有文件的总大小不能超过此属性的值,否则也会引发错误。

因此,如果您希望限制单个文件的大小,则应修改spring.servlet.multipart.max-file-size属性。如果您希望限制整个请求的大小,则应修改spring.servlet.multipart.max-request-size属性。

如何解决SpringBoot 2中文件上传限制不生效的问题

现在我们知道了问题的原因,解决起来就简单了:

  1. 确定您要限制的内容:单个文件还是整个请求。
  2. 修改相应属性的值:spring.servlet.multipart.max-file-sizespring.servlet.multipart.max-request-size
  3. 重新启动服务。

调整这些属性的值后,重启服务,您的文件上传大小限制将立即生效。

代码示例

以下代码示例演示了如何配置这两个属性:

# 限制单个文件大小为5MB
spring.servlet.multipart.max-file-size=5MB

# 限制整个请求大小为10MB
spring.servlet.multipart.max-request-size=10MB

常见问题解答

  • 问:我修改了属性值,但限制仍然不起作用。
    答:请确保您修改了正确的属性,并正确重启了服务。
  • 问:我可以设置不同的限制值吗?
    答:是的,您可以为spring.servlet.multipart.max-file-sizespring.servlet.multipart.max-request-size设置不同的值,具体取决于您的要求。
  • 问:是否有其他方法来限制文件上传大小?
    答:除了使用这两个属性,您还可以在控制器中使用@RequestParam(required = false) MultipartFile file参数显式检查文件大小。
  • 问:文件上传大小限制适用于所有控制器吗?
    答:是的,这些限制适用于所有控制器。
  • 问:我可以配置不同的文件类型大小限制吗?
    答:否,这两个属性不提供基于文件类型的自定义限制。

结论

通过了解spring.servlet.multipart.max-file-sizespring.servlet.multipart.max-request-size属性的细微差别,我们可以有效地控制SpringBoot 2中的文件上传大小限制。通过遵循这些步骤,您将能够确保您的应用程序以预期的方式处理文件上传。