錯誤背景:由于檔案儲存在第三方的伺服器上,所有需要講将接收到MultipartFile檔案 轉換為File 然後傳輸。(Spring MVC)
通過搜尋引擎 找到了以下兩種方法。
均要在先spring xml中聲明。如下:
如需添加最大,最小等範圍控制,請自行百度參考。
方法一:強轉
方法二:
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();
}
親測有效。