MultipartFile


一、概念

   1. MultipartFile為org.springframework.web.mutipart包下的一個類,是一個接口,並繼承自InputStreamSource,即可將MultipartFile格式的文件轉換為輸入流。源碼解釋:文件內容存儲在內存中或臨時存儲在磁盤上。在任何一種情況下,如果需要,用戶負責將文件內容復制到會話級或持久性存儲。臨時存儲將在請求處理結束時清除。

   2.方法

       multipartFile.getName():獲取的是前后端約定的傳入文件的參數的名稱;

       multipartFile.getOriginalFileName():返回客戶端系統中原始文件名;

       multipartFile.getBytes():用來將文件轉換成一種字節數組返回,會拋出IOException異常;

       multipartFile.getInputStream():用來將文件轉換成輸入流的形式來傳輸文件,會拋出IOException異常;

       multipartFile.transferTo(java.io.File dest):將接收文件傳輸到給定目標路徑;

       multipartFile.getSize():用來獲取文件的大小,單位是字節;

       multipartFile.getContentType():獲取的是文件的類型,注意是文件的類型,不是文件的拓展名;

       multipartFile.isEmpty():用來判斷傳入的文件是否為空,如果為空則表示沒有傳入任何文件;

二、應用

      案例

@PostMapping("/uploadFile")
public String uploadImg(@RequestParam("file") MultipartFile file, @RequestParam("equipmentId") String equipmentId) {
String baseDir = "./imgFile";  // 這里不能直接使用相對路徑
  if (!file.isEmpty()) {
      String name = file.getOriginalFilename();
      String prefix = name.lastIndexOf(".") != -1 ? name.substring(name.lastIndexOf(".")) : ".jpg";
      String path = UUID.randomUUID().toString().replace("-", "") + prefix;
      try {
        // 這里代碼都是沒有問題的
          File filePath = new File(baseDir, path);
          // 第一次執行代碼時,路徑是不存在的
          logger.info("文件保存路徑:{},是否存在:{}", filePath.getParentFile().exists(), filePath.getParent());
          if (!filePath.getParentFile().exists()) {   // 如果存放路徑的父目錄不存在,就創建它。
              filePath.getParentFile().mkdirs();
          }
          // 如果路徑不存在,上面的代碼會創建路徑,此時路徑即已經創建好了
          logger.info("文件保存路徑:{},是否存在:{}", filePath.getParentFile().exists(), filePath.getParent());
          // 此處使用相對路徑,似乎是一個坑!
          // 相對路徑:filePath
          // 絕對路徑:filePath.getAbsoluteFile()
          logger.info("文件將要保存的路徑:{}", filePath.getPath());
          file.transferTo(filePath);
          logger.info("文件成功保存的路徑:{}", filePath.getAbsolutePath());
          return "上傳成功";
      } catch (Exception e) {
          logger.error(e.getMessage());
      }
  }
  return "上傳失敗";
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM