当前位置: 首页 > news >正文

spring 如何将mutipartFile转存到本地磁盘

两者的区别和联系

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

MutipartFile 转换File的三种方式

  • 使用MutipartFile 自带的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保存文件

  1. 创建 FileOutputStream
  2. 将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!";}
http://www.lryc.cn/news/462950.html

相关文章:

  • 【学术会议-6】激发灵感-计算机科学与技术学术会议邀您参与,共享学术盛宴,塑造明天的科技梦想!
  • 模电基础(晶体管放大电路)
  • Python3 接口自动化测试,HTTPS下载文件(GET方法和POST方法)
  • rhce:列行性(at和cron)
  • kubernetes给service动态增加服务端口
  • 如何将 html 渲染后的节点传递给后端?
  • ubuntu24 finalshell 无法连接ubuntu服务器, 客户端无法连接ubuntu, 无法远程连接ubuntu。
  • 牛客编程初学者入门训练——BC19 牛牛的对齐
  • log file sync 内部执行过程
  • 【动手学深度学习】7.5 批量规范化(个人向笔记)
  • 111 - exercise 5
  • 第二十五:IP网络层的数据,IP数据报
  • 三菱FX3UPLC机械原点回归- DSZR/ZRN指令
  • 网络通信与并发编程(三)粘包现象解决方案、socketserver实现并发
  • 使用Uniapp开发微信小程序实现一个自定义的首页顶部轮播图效果?
  • 软硬连接及动静态库
  • vue3.0 + vite:中使用 sass
  • 搭建`mongodb`副本集-开启权限认证 mongo:7.0.5
  • 智能工厂的软件设计 由“原力“篇引发的思考: 回顾、展望和本位 之2 修订稿之2
  • 2025选题推荐|基于SpringBoot的幼儿园智能管理与监控系统的设计与实现
  • mqtt客户端订阅一直重复连接?
  • SegFormer: 一个基于Transformer的高效视觉图像分割算法
  • SoC芯片中Clock Gen和Reset Gen的时钟树综合
  • 学习资料:电子标签拣货技术
  • Git 提交规范参考
  • 【前端】Matter:物体的高级控制
  • ASP.NET Core 路由规则 MapControllerRoute、MapDefaultControllerRoute、MapController
  • linux命令之less用法
  • 试用cursor的简单的记录
  • 下载Edge/Chrome浏览器主题的背景图片