@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();
}
}
}