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转存到磁盘的资料请关注脚本之家其它相关文章!