MultipartConfig注释/ servlet配置

时间:2014-04-18 05:04:06

标签: java servlets tomcat7 multipartform-data

如果我使用有效的注释(@MultipartConfig(maxFileSize=XXX)),但web.xml种类(<max-file-size>XXX</max-file-size>)似乎仅在<file-size-threshold>出现时才有效。

这似乎不对,我是对的吗?

编辑:当它工作时(因为我已经添加了file-size-threshold标签)并且我上传了一个超过限制的文件,我得到的异常与使用注释时不同。绝对看起来很奇怪。

EDIT2:只是为了添加更多细节,当我通过注释设置最大文件大小时得到SizeLimitExceededException,当我设置最大文件大小时得到FileSizeLimitExceededException(带有0文件)大小阈值,使其工作)。这两个例外都打印了我在异常消息中设置的最大文件大小限制。

1 个答案:

答案 0 :(得分:1)

实际上MultipartConfig的API文档指定了默认值0

public abstract int fileSizeThreshold
     

将文件写入磁盘的大小阈值

     

默认:
    0

不幸的是,multipart-configType(在web-common_3_0.xsd中)未指定默认值:

<xsd:element name="file-size-threshold"
             type="xsd:integer"
             minOccurs="0"
             maxOccurs="1">
  <xsd:annotation>
    <xsd:documentation>

      The size threshold after which an uploaded file will be
      written to disk

    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

我也无法在JSR 315中找到任何相关信息。虽然我们可以推断minOccurs="0"暗示file-size-threshold是可选的,但是当该元素不存在时,规范中没有任何内容描述预期的行为。所以这取决于供应商。

提示:试试<file-size-threshold>0<file-size-threshold>

提示2:如果它没有解决供应商的问题(尝试使用应用服务器问题跟踪器或官方问题跟踪器,无论您执行javax.servlet {/ 1}他们使用)。不要使用&#34;错误&#34;这个词,而是使用诸如&#34;明智的默认值和#34;之类的术语。和#34;元数据互操作性&#34; (它会大大提高你的机会):D。