一、概念
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 "上传失败"; }