当前位置: 代码网 > it编程>编程语言>Java > Spring将MultipartFile转存到本地磁盘的三种方式

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

2024年10月28日 Java 我要评论
两者的区别和联系multipartfile是spring的一部分,file则是java的标准类multipartfile用于接收web传递的文件,file操作本地系统的文件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转存到磁盘的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com