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