猿问

如何在 Spring 配置中以 MB 或 GB 为单位指定 maxInMemorySize

我对 Java 和 Spring 比较陌生。我正在尝试制作一个应用程序,用户可以在其中上传最大 2.5 GB 的文件。因此,我尝试springapp-servlet.xml从我在某处阅读的内容中将其设置在文件中。


<bean id="multipartResolver"

      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <property name="maxUploadSize" value="2500001000" />

    <property name="maxInMemorySize" value="2500001000" />

    <property name="defaultEncoding" value="utf-8" />

</bean>

但是,它给了我以下错误:


"Failed to convert property value of type 'java.lang.String' 

 to required type 'int' for property 'maxInMemorySize';"

我认为这个错误是因为我的价值很长。如何以 MB 或 GB 为单位指定此值?


慕姐8265434
浏览 636回答 3
3回答

宝慕林4294392

Spring 提供了一个名为DataSize的类。如果您设置自己的配置类,您可以使用该类型而不是“int”。如果 Spring 使用该属性类型,对您来说可能会更方便。

临摹微笑

maxUploadSize 不是字符串,您传递给它一个字符串,并且不能转换为数字,您必须传递这样的数字:<bean id="multipartResolver"&nbsp; &nbsp; &nbsp; &nbsp; class="org.springframework.web.multipart.commons.CommonsMultipartResolver">&nbsp; &nbsp; &nbsp; &nbsp; <property name="maxUploadSize">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <value>100000</value>&nbsp; &nbsp; &nbsp; &nbsp; </property>&nbsp; &nbsp; </bean>无限值是-1您只需要更改 maxUploadSize 并且上传的文件仍然会超过 MaxInMemorySize 数量,但它们不会存储在内存中。

慕虎7371278

setMaxInMemorySize会打电话setSizeThreshold(int sizeThreshold),org.apache.commons.fileupload.disk.DiskFileItemFactory我认为不能指定“MB”。因此,您可能需要使用其他 FileItemFactory 或自己编写代码。
随时随地看视频慕课网APP

相关分类

Java
我要回答