異常如下:
org.springframework.web.multipart.MultipartException: The current request is not a multipart request
原因分析:
可能原因1:
form表單中沒有添加 enctype="multipart/form-data" 屬性
可能原因2:
請求方式必須為post,如果不是則必定出錯
可能原因3:
請求的contentType不是"multipart/form-data" 【可以在控制層使用request.getContentType()測試查看】
那么分析一下springmvc中如對request請求類型進行判斷:
當spring對請求進行處理的時候首先判斷請求是否是文件上傳請求,如果controller曾匹配的參數類型為MultipartFile
並且請求不是文件上傳請求,這時候就會拋出上面的那個一場,而spring判斷請求類型的依據就是ContentType
所以解決方案就顯而易見了,我這里使用的是jquery-ajax請求,代碼如下:
1 $.ajax({ 2 type: form.method || 'POST', 3 url:$form.attr("action"), 4 data:$form.serializeArray(), 5 contentType: "multipart/form-data", 6 dataType:"json", 7 cache: false, 8 success: alter("success"), 9 error: alert("error") 10 });
想想看為了處理這個問題也花了一天的時間,本人謹奉上如上心得,如有問題,希望留言探討!