最近在項目中上傳文件時又出現了常見的異常信息:前端
java.lang.ClassCastException: net.bull.javamelody.JspWrapper$HttpRequestWrapper3 cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequestjava
1、排查緣由所在web
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;spring
對象request是HttpServletRequest的對象,提示了造型cast失敗。mvc
2、問題解決app
回顧了以前解決問題的經驗,肯定緣由在於表單沒有添加 enctype="multipart/form-data"post
咱們如要使用springmvc的MultipartFile接收前端頁面上傳,須要表單設置屬性 enctype="multipart/form-data"。編碼
表單中enctype="multipart/form-data"的意思,是設置表單的MIME編碼。url
默認狀況,這個編碼格式是application/x-www-form-urlencoded,不能用於文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數據,進行下面的操做。spa
3、表單enctype屬性
HTML表單如何打包數據文件是由enctype這個屬性決定的。enctype有如下幾種取值:
application/x-www-form-urlencoded
在發送前編碼全部字符(默認)(空格被編碼爲’+’,特殊字符被編碼爲ASCII十六進制字符)multipart/form-data
不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。text/plain
空格轉換爲 「+」 加號,但不對特殊字符編碼。默認enctype=application/x-www-form-urlencoded
,因此表單的內容會按URL規則編碼,而後根據表單的提交方法: