標籤:file has been moved maxinmemorysize maxuploadsize spring commonsmultipartreso
在用jqueryfileupload上傳檔案時報如下錯誤:
java.lang.IllegalStateException: File has been moved - cannot be read again
後台介面是spring mvc, 檢查sprnig mvc設定檔:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize"><value>102400000</value></property></bean>
配置了允許上傳檔案的最大size, 而自己上傳的檔案大小遠遠小於這個,什麼情況呢?
經過網上搜尋資料,發現spring mvc除了maxUploadSize參數,還有一個maxInMemorySize參數,指定允許檔案被寫入記憶體的最大szie,則預設為1024位元組,即1MB,如果試上傳大於1024個位元組的檔案,你需要增加maxInMemorySize價。
如下:
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- 添加攔截器 --><bean id="handlerMapping"class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"><property name="interceptors"><bean class="com.message.web.interceptor.SessionInterceptor" /></property></bean> <!-- 配置controller掃描 --><context:component-scan base-package="com.message.web.controller" /><!-- 配置springmvc視圖解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property><property name="prefix"><value>/message/</value></property><property name="suffix"><value>.jsp</value></property></bean><!-- 設定上傳檔案的最大尺寸為100MB --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize"><value>102400000</value></property><property name="maxInMemorySize"><value>10240000</value></property></bean></beans>
java.lang.IllegalStateException: File has been moved - cannot be read again