java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring MultipartFile转存到磁盘

Spring将MultipartFile转存到本地磁盘的三种方式

作者:当归1024

在Java中处理文件向来是一种不是很方便的操作,然后随着Spring框架的崛起,使用Spring框架中的MultipartFile来处理文件也是件很方便的事了,今天就给大家介绍Spring将MultipartFile转存到本地磁盘的方式,需要的朋友可以参考下

两者的区别和联系

  • MultipartFile是spring的一部分,File则是java的标准类
  • MultipartFile用于接收web传递的文件,File操作本地系统的文件

MultipartFile 转换File的三种方式

  • 使用MultipartFile 自带的transferTo方法
  • 使用java自带的FileOutPutStream流
  • 使用java自带的NIO方法

transferTo保存

在这里插入图片描述

代码

参数:目标文件的绝对路径

    /**
     * Upload file 使用MultipartFile接收文件 transferTo方法保存文件
     * @param file file
     * @return
     */
    @PostMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file) {
        // 判断文件是否为空
        if (file.isEmpty()) {
            return "File is empty!";
        }
        try {
            // 设置文件存储路径
            String uploadFolder = UPLOAD_FOLDER;
            // 判断文件夹是否存在,不存在则创建
            File folder = new File(uploadFolder);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            // 获取文件名
            String fileName = file.getOriginalFilename();
            // 设置文件存储路径
            File targetFile = new File(uploadFolder + File.separator + fileName);
            // 保存文件
            file.transferTo(targetFile);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return "Upload successfully!";
    }

测试

借助apifox工具测试,MutipartFile 选择body

在这里插入图片描述

在这里插入图片描述

测试结果:同时创建了文件夹和文件

在这里插入图片描述

使用原生的FileOutputStream保存文件

  • 创建 FileOutputStream流
  • 将MultipartFile 文件转换为字节数组输入到FileOutputStream流中,保存文件
    /**
     * 使用原生的FileOutputStream保存文件
     */
    @PostMapping("/upload2")
    public String upload2(@RequestParam("file") MultipartFile file) {
        // 判断文件是否为空
        if (file.isEmpty()) {
            return "File is empty!";
        }
        try {
            // 设置文件存储路径
            String uploadFolder = UPLOAD_FOLDER;
            // 判断文件夹是否存在,不存在则创建
            File folder = new File(uploadFolder);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            // 获取文件名
            String fileName = file.getOriginalFilename();
            // 设置文件存储路径
            File targetFile = new File(uploadFolder + File.separator + fileName);
            // 保存文件 使用原生的FileOutputStream保存文件
            try(FileOutputStream fileOutputStream = new FileOutputStream(targetFile)) {
                fileOutputStream.write(file.getBytes());
            }


        } catch (Exception e) {
            e.printStackTrace();
            return "Upload failed!";
        }

        return "Upload successfully!";
    }

NIO复制文件

使用Files工具类的copy方法,三个参数:源文件的输入流、目标文件的文件夹特殊操作:REPLACE_EXISTING的作用是 若存在则替换
    /**
     * 使用原生的NIO复制保存文件
     */
    @PostMapping("/upload3")
    public String upload3(@RequestParam("file") MultipartFile file) {
        // 判断文件是否为空
        if (file.isEmpty()) {
            return "File is empty!";
        }
        try {
            // 设置文件存储路径
            String uploadFolder = UPLOAD_FOLDER;
            // 判断文件夹是否存在,不存在则创建
            File folder = new File(uploadFolder);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            // 获取文件名
            String fileName = file.getOriginalFilename();
            // 设置文件存储路径
            File targetFile = new File(uploadFolder + File.separator + fileName);
            // 保存文件 使用原生的NIO复制保存文件
            Files.copy(file.getInputStream(), targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING);

        } catch (Exception e) {
            e.printStackTrace();
            return "Upload failed!";
        }

        return "Upload successfully!";
    }

以上就是Spring将MultipartFile转存到本地磁盘的方式的详细内容,更多关于Spring MultipartFile转存到磁盘的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文