xl_echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!!
---
> 圖片上功能有很多的實現,博主這里使用的是vue+iview+springboot實現的。區別於其他圖片上傳不同的是,這里是開發的時候實際碰到的問題,比如File類型的使用。閱讀建議--直接閱讀底部最終實現可以快速開發 ### 實際問題的產生 在我們普通圖片上傳的過程中,我們一般都是使用MultipartFile來進行接收。但是由於業務需求,在我們的部分業務中必須要拿到File類型的文件,不然就沒法進行開發。圖片上傳接受File就成為了這次需求的重點,但是試了很多次,試下你都很復雜。於是便有了一下方案,直接用MultipartFile來接受,但是需要File類型的時候,使用MultipartFile來轉換。
### MultipartFile轉File核心代碼 ```java File file = new File("F:" + "/" + originalFilename); multipart.transferTo(file); ```
> 這里利用的原理很假單,就是從流中讀取數據覆蓋到file文件中。注意:tranferTo不能讀取兩次,流中的數據讀完之后,流就自動關閉了。需要讀取兩次,第二次直接在file中去即可。
### 碰到的坑:本地和服務器路徑不一樣。 簡單來說就是系統不一的問題,開發的時候,大多數都用的是windows和mac的系統,這種情況下一般開發可能先考慮本地測試,實現功能為主。但是如果要上到服務器上面,路徑的區別問題,導致本地能實現的轉換,到服務器就會報錯。所以我們需要做系統的識別
### 系統識別代碼如下:
```java
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 + "系統--------------------------");
}
```
### 碰到的坑: 當如果是linux的時候,可能無法創建文件,沒有權限,所以要開通權限。最終實現如下:
```java
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;
}
}
```
歡迎添加微信交流學習
---
