轉自http://www.cnblogs.com/zuoxiaoxia/p/6116942.htmlhtml
錯誤背景:因爲文件儲存在第三方的服務器上,全部須要講將接收到MultipartFile文件 轉換爲File 而後傳輸。(Spring MVC)java
經過搜索引擎 找到了如下兩種方法。web
均要在先spring xml中聲明。以下: spring
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
如需添加最大,最小等範圍控制,請自行百度參考。服務器
方法一:強轉搜索引擎
方法二:spa
1
2
3
|
CommonsMultipartFile cf = (CommonsMultipartFile)multfile;
DiskFileItem fi = (DiskFileItem) cf.getFileItem();
File file = fi.getStoreLocation();
|
親測有效。可是後期發現設置的問題 致使文件轉換中錯誤,文件不可讀從而致使 程序拋出 is not a normal file 異常。code
由於錯誤出現的隨機性很大,因此選擇用緩衝區來實現這個轉換即便用java 建立的臨時文件 使用 MultipartFile.transferto()方法 。orm
代碼以下:xml
1
2
3
4
5
6
7
8
9
|
File f =
null
;
try
{
f=File.createTempFile(
"tmp"
,
null
); // 建立file臨時文件
file.transferTo(f);<br> f.deleteOnExit(); // 將CommonsMultipartFile的臨時文件的數據轉到File 對象的臨時文件
}
catch
(HttpException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
|
親測有效。