上傳單檔案方法
阿新 • • 發佈:2022-01-07
@RequestMapping("/upload") @ResponseBody public Result<Object> upload(@RequestParam("file") MultipartFile multipartFile, HttpServletRequest request) { if (multipartFile.isEmpty()) { return Result.fail("檔案為空"); } // 專案根路徑下的目錄 -- SpringBoot static 目錄相當於是根路徑下(SpringBoot 預設)String UPLOAD_PATH_PREFIX = "static/uploadFile/"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/"); //構建檔案上傳所要儲存的"資料夾路徑"--這裡是相對路徑,儲存到專案根路徑的資料夾下 String realPath = new String("src/main/resources/" + UPLOAD_PATH_PREFIX); String format = sdf.format(new Date());//存放上傳檔案的資料夾 File file = new File(realPath + format); if (!file.isDirectory()) { //遞迴生成資料夾 file.mkdirs(); } //獲取原始的名字 original:最初的,起始的 方法是得到原來的檔名在客戶機的檔案系統名稱 String oldName = multipartFile.getOriginalFilename(); String newName = UUID.randomUUID().toString()+"-"+oldName;try { //構建真實的檔案路徑 File newFile = new File(file.getAbsolutePath() + File.separator + newName); //轉存檔案到指定路徑,如果檔名重複的話,將會覆蓋掉之前的檔案,這裡是把檔案上傳到 “絕對路徑” multipartFile.transferTo(newFile); // String filePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/uploadFile/" + format + newName; // String filePath = "/uploadFile/" + format + newName; return Result.success(filePath, null); } catch (Exception e) { e.printStackTrace(); return Result.fail(); } } }