圖片上傳怎么用File接受文件


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;

   }

}

```

歡迎添加微信交流學習

---

![圖片1](https://img2018.cnblogs.com/blog/1472376/201908/1472376-20190805101349042-874117020.png)


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com