java中MultipartFile和File最簡單的互相轉(zhuǎn)換示例
MultipartFile和File 的區(qū)別
MuitipartFile 是 Spring 框架中用來處理文件上傳的接口,它封裝了文件上傳的信息,比如文件名、文件類型等。
File 是Java 標準庫中提供的文件操作類,用于描述文件信息,比如文件路徑、文件大小等
總的來說,MultipantFile 是用來處理文件上傳的,而 File 則是用來描述文件信息的。
MultipartFile 與 File 的 互相轉(zhuǎn)換
1. MultipartFile 轉(zhuǎn) File
最常見的方式(通過文件流寫入):
public File multipartFile2File (MultipartFile multipartFile) { // 創(chuàng)建臨時文件 String path = "export/demo.xlsx"; File file = new File(path); InputStream inputStream = null; FileOutputStream outputStream = null; try { // 獲取文件輸入流 inputStream = multipartFile.getInputStream(); if (!file.exists()) { file.createNewFile(); } // 創(chuàng)建輸出流 outputStream = new FileOutputStream(file); byte[] bytes = new byte[1024]; int len; // 寫入到創(chuàng)建的臨時文件 while ((len = inputStream.read(bytes)) > 0) { outputStream.write(bytes, 0, len); } } catch (Exception e) { throw new RuntimeException(e); } finally { // 關(guān)流 try { if (outputStream != null) { outputStream.close(); } if (outputStream != null) { inputStream.close(); } outputStream.close(); } catch (IOException e) { throw new RuntimeException(e); } } return file; }
最簡單的方式:
使用Spring中的FileCpopyUtils類的copy()方法將MultipartFile 轉(zhuǎn)換為File類型
public File multipartFile2File (MultipartFile multipartFile) { String path = "export/demo.xlsx"; File file = new File(path); try { if (!file.exists()) { file.createNewFile(); } ????????// 底層也是通過io流寫入文件file FileCopyUtils.copy(multipartFile.getBytes(), file); } catch (Exception e) { throw new RuntimeException(e); } return file; }
2. File 轉(zhuǎn) MultipartFile
使用org.springframework.mock.web.MockMultipartFile 需要導(dǎo)入spring-test.jar
public MultipartFile file2MultipartFile () { String path = "export/demo.xlsx"; File file = new File(path); MultipartFile multipartFile; try { FileInputStream fileInputStream = new FileInputStream(file); multipartFile = new MockMultipartFile("copy"+file.getName(),file.getName(), ContentType.APPLICATION_OCTET_STREAM.toString(),fileInputStream); System.out.println(multipartFile.getName()); // 輸出demo.xlsx fileInputStream.close(); } catch (Exception e) { throw new RuntimeException(e); } return multipartFile; }
使用CommonsMultipartFile
public MultipartFile file2MultipartFile () { String path = "export/demo.xlsx"; File file = new File(path); MultipartFile multipartFile; try { DiskFileItem fileItem2 = (DiskFileItem) new DiskFileItemFactory().createItem("file", ContentType.MULTIPART.getValue(), true, file.getName()); ????????//也可以用IOUtils.copy(inputStream,os); Files.copy(Paths.get(file.getAbsolutePath()), fileItem2.getOutputStream()); multipartFile = new CommonsMultipartFile(fileItem2); } catch (Exception e) { throw new RuntimeException(e); } return multipartFile; }
總結(jié)
到此這篇關(guān)于java中MultipartFile和File最簡單的互相轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)java MultipartFile和File互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決rocketmq-client查詢手動發(fā)送消息異常問題
這篇文章主要介紹了解決rocketmq-client查詢手動發(fā)送消息異常問題,具有很好的參考價值,希望對大家大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Mybatis批量插入Oracle數(shù)據(jù)的方法實例
在開發(fā)中或多或少都會遇到數(shù)據(jù)批量插入的功能,最近我在做項目的過程中就遇到了這樣一個問題,下面這篇文章主要給大家介紹了關(guān)于Mybatis批量插入Oracle數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-01-01Java發(fā)送http請求的示例(get與post方法請求)
這篇文章主要介紹了Java發(fā)送http請求的示例(get與post方法請求),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01Apache?Commons?CLI構(gòu)建命令行應(yīng)用利器教程
這篇文章主要為大家介紹了構(gòu)建命令行應(yīng)用利器Apache?Commons?CLI的使用教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12spring?boot前后端交互之?dāng)?shù)據(jù)格式轉(zhuǎn)換問題
這篇文章主要介紹了spring?boot前后端交互之?dāng)?shù)據(jù)格式轉(zhuǎn)換,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01mybatis返回list<Integer>時resultType寫Integer問題
這篇文章主要介紹了mybatis返回list<Integer>時resultType寫Integer問題,具有很好的參考價值,希望對大家有所幫助,2023-12-12SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析
這篇文章主要介紹了SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03Java為圖片添加水印并保存實現(xiàn)方法(附帶源碼)
這篇文章主要介紹了如何使用Java編程語言在圖像上添加文字或圖片水印,并提供了一個簡單的Java程序?qū)崿F(xiàn),文中給出了詳細的代碼示例,需要的朋友可以參考下2025-03-03