xl_echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這纔是真正的堪稱強大!!vue
圖片上功能有不少的實現,博主這裏使用的是vue+iview+springboot實現的。區別於其餘圖片上傳不一樣的是,這裏是開發的時候實際碰到的問題,好比File類型的使用。閱讀建議--直接閱讀底部最終實現能夠快速開發java
在咱們普通圖片上傳的過程當中,咱們通常都是使用MultipartFile來進行接收。可是因爲業務需求,在咱們的部分業務中必需要拿到File類型的文件,否則就無法進行開發。圖片上傳接受File就成爲了此次需求的重點,可是試了不少次,試下你都很複雜。因而便有了一下方案,直接用MultipartFile來接受,可是須要File類型的時候,使用MultipartFile來轉換。linux
File file = new File("F:" + "/" + originalFilename);
multipart.transferTo(file);複製代碼
這裏利用的原理很假單,就是從流中讀取數據覆蓋到file文件中。注意:tranferTo不能讀取兩次,流中的數據讀完以後,流就自動關閉了。須要讀取兩次,第二次直接在file中去便可。spring
簡單來講就是系統不一的問題,開發的時候,大多數都用的是windows和mac的系統,這種狀況下通常開發可能先考慮本地測試,實現功能爲主。可是若是要上到服務器上面,路徑的區別問題,致使本地能實現的轉換,到服務器就會報錯。因此咱們須要作系統的識別windows
String osName = System.getProperty("os.name", "");
if (osName.startsWith("Windows")) {
System.out.println("當前操做系統爲" + osName + "系統--------------------------");
} else if (osName.startsWith("Mac OS")) {
System.out.println("當前操做系統爲" + osName + "系統--------------------------");
} else {
System.out.println("當前操做系統爲" + osName + "系統--------------------------");
}複製代碼
public File multipartToFile(MultipartFile multipart) throws IOException {
String osName = System.getProperty("os.name", "");
String originalFilename = multipart.getOriginalFilename();
if (osName.startsWith("Windows")) {
System.out.println("當前操做系統爲" + osName + "系統--------------------------");
File file = new File("F:" + "/" + originalFilename);
multipart.transferTo(file);
return file;
} else if (osName.startsWith("Mac OS")) {
System.out.println("當前操做系統爲" + osName + "系統--------------------------");
File file = new File("/Users/pavankumar/Desktop/" + originalFilename);
multipart.transferTo(file);
return file;
} else {
System.out.println("當前操做系統爲" + osName + "系統--------------------------");
File file=new File("/usr/local/java/" + originalFilename);
file.setWritable(true, false);
multipart.transferTo(file);
return file;
}
}複製代碼