Spring將MultipartFile轉(zhuǎn)存到本地磁盤的三種方式
兩者的區(qū)別和聯(lián)系
- MultipartFile是spring的一部分,F(xiàn)ile則是java的標(biāo)準(zhǔn)類
- MultipartFile用于接收web傳遞的文件,F(xiàn)ile操作本地系統(tǒng)的文件
MultipartFile 轉(zhuǎn)換File的三種方式
- 使用MultipartFile 自帶的transferTo方法
- 使用java自帶的FileOutPutStream流
- 使用java自帶的NIO方法
transferTo保存
代碼
參數(shù):目標(biāo)文件的絕對(duì)路徑
/** * Upload file 使用MultipartFile接收文件 transferTo方法保存文件 * @param file file * @return */ @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) { // 判斷文件是否為空 if (file.isEmpty()) { return "File is empty!"; } try { // 設(shè)置文件存儲(chǔ)路徑 String uploadFolder = UPLOAD_FOLDER; // 判斷文件夾是否存在,不存在則創(chuàng)建 File folder = new File(uploadFolder); if (!folder.exists()) { folder.mkdirs(); } // 獲取文件名 String fileName = file.getOriginalFilename(); // 設(shè)置文件存儲(chǔ)路徑 File targetFile = new File(uploadFolder + File.separator + fileName); // 保存文件 file.transferTo(targetFile); } catch (Exception e) { e.printStackTrace(); } return "Upload successfully!"; }
測(cè)試
借助apifox工具測(cè)試,MutipartFile 選擇body
測(cè)試結(jié)果:同時(shí)創(chuàng)建了文件夾和文件
使用原生的FileOutputStream保存文件
- 創(chuàng)建 FileOutputStream流
- 將MultipartFile 文件轉(zhuǎn)換為字節(jié)數(shù)組輸入到FileOutputStream流中,保存文件
/** * 使用原生的FileOutputStream保存文件 */ @PostMapping("/upload2") public String upload2(@RequestParam("file") MultipartFile file) { // 判斷文件是否為空 if (file.isEmpty()) { return "File is empty!"; } try { // 設(shè)置文件存儲(chǔ)路徑 String uploadFolder = UPLOAD_FOLDER; // 判斷文件夾是否存在,不存在則創(chuàng)建 File folder = new File(uploadFolder); if (!folder.exists()) { folder.mkdirs(); } // 獲取文件名 String fileName = file.getOriginalFilename(); // 設(shè)置文件存儲(chǔ)路徑 File targetFile = new File(uploadFolder + File.separator + fileName); // 保存文件 使用原生的FileOutputStream保存文件 try(FileOutputStream fileOutputStream = new FileOutputStream(targetFile)) { fileOutputStream.write(file.getBytes()); } } catch (Exception e) { e.printStackTrace(); return "Upload failed!"; } return "Upload successfully!"; }
NIO復(fù)制文件
使用Files工具類的copy方法,三個(gè)參數(shù):源文件的輸入流、目標(biāo)文件的文件夾特殊操作:REPLACE_EXISTING的作用是 若存在則替換
/** * 使用原生的NIO復(fù)制保存文件 */ @PostMapping("/upload3") public String upload3(@RequestParam("file") MultipartFile file) { // 判斷文件是否為空 if (file.isEmpty()) { return "File is empty!"; } try { // 設(shè)置文件存儲(chǔ)路徑 String uploadFolder = UPLOAD_FOLDER; // 判斷文件夾是否存在,不存在則創(chuàng)建 File folder = new File(uploadFolder); if (!folder.exists()) { folder.mkdirs(); } // 獲取文件名 String fileName = file.getOriginalFilename(); // 設(shè)置文件存儲(chǔ)路徑 File targetFile = new File(uploadFolder + File.separator + fileName); // 保存文件 使用原生的NIO復(fù)制保存文件 Files.copy(file.getInputStream(), targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING); } catch (Exception e) { e.printStackTrace(); return "Upload failed!"; } return "Upload successfully!"; }
以上就是Spring將MultipartFile轉(zhuǎn)存到本地磁盤的方式的詳細(xì)內(nèi)容,更多關(guān)于Spring MultipartFile轉(zhuǎn)存到磁盤的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章

Java將數(shù)組轉(zhuǎn)換成字符串的四種方法總結(jié)

springboot整合spring-retry的實(shí)現(xiàn)示例

idea2023創(chuàng)建JavaWeb教程之右鍵沒有Servlet的問題解決

全面解析SpringBoot自動(dòng)配置的實(shí)現(xiàn)原理

SpringBoot?2.x整合Log4j2日志的詳細(xì)步驟

Spring配置多數(shù)據(jù)源導(dǎo)致事物無(wú)法回滾問題

詳解如何將已有項(xiàng)目改造為Spring Boot項(xiàng)目

SpringMVC 重定向參數(shù)RedirectAttributes實(shí)例