錯誤背景:由於文件儲存在第三方的服務器上,所有需要講將接收到MultipartFile文件 轉換為File 然后傳輸。(Spring MVC)
通過搜索引擎 找到了以下兩種方法。
均要在先spring xml中聲明。如下:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
如需添加最大,最小等范圍控制,請自行百度參考。
方法一:強轉
方法二:
CommonsMultipartFile cf = (CommonsMultipartFile)multfile; DiskFileItem fi = (DiskFileItem) cf.getFileItem(); File file = fi.getStoreLocation();
親測有效。但是后期發現設置的問題 導致文件轉換中錯誤,文件不可讀從而導致 程序拋出 is not a normal file 異常。
因為錯誤出現的隨機性很大,所以選擇用緩沖區來實現這個轉換即使用java 創建的臨時文件 使用 MultipartFile.transferto()方法 。
代碼如下:
File f = null; try { f=File.createTempFile("tmp", null); file.transferTo(f);
f.deleteOnExit(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
親測有效。