MultipartFile和File互转

一、M转F

1.详细方法

/*** 将MultipartFile转换为File*** @param outFilePath 参数* @param multiFile 参数* @return 执行结果*/public static File multipartFileToFile(String outFilePath, MultipartFile multiFile) {// 获取文件名if (null == multiFile) {return null;}String fileName = multiFile.getOriginalFilename();if (null == fileName) {return null;}try {File toFile;InputStream ins;ins = multiFile.getInputStream();//指定存储路径toFile = new File(outFilePath.concat(File.separator).concat(multiFile.getOriginalFilename()));inputStreamToFile(ins, toFile);return toFile;} catch (Exception e) {e.printStackTrace();}return null;}private static void inputStreamToFile(InputStream ins, File file) {try (OutputStream os = new FileOutputStream(file)) {int bytesRead;int bytes = 8192;byte[] buffer = new byte[bytes];while ((bytesRead = ins.read(buffer, 0, bytes)) != -1) {os.write(buffer, 0, bytesRead);}ins.close();} catch (Exception e) {e.printStackTrace();}}

2.封装方法

File file = new File(path);
FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);

3.其他方法

//创建file对象
File file = new File(path);
//将multipartFile转为file
multipartFile.transferTo(file);
return file;

二、F转M

/*** file转MultipartFile** @param file file* @return MultipartFile*/public static MultipartFile fileToMultipartFile(File file) {MultipartFile result = null;if (null != file) {try (FileInputStream input = new FileInputStream(file)) {result = new MockMultipartFile(file.getName().concat("temp"), file.getName(), "text/plain", input);} catch (IOException e) {e.printStackTrace();}}return result;}

三、其他的一些功能

package gov.cma.ew.qc.common.utils;import cn.hutool.core.text.CharSequenceUtil;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.springframework.web.multipart.MultipartFile;import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;/*** file工具类** @author ldl*/
public class FileUtil {private FileUtil () {}/*** 获取** @param file new File(path) 目录* @return 返回值*/public static List<String> getDirectory(File file) {File[] fList = file.listFiles();if (fList == null || fList.length == 0) {return Collections.emptyList();}List<String> files = new ArrayList<>();for (File f : fList) {if (!f.isDirectory()) {//这里将列出所有的文件files.add(f.getAbsolutePath());}getDirectory(f);}return files;}/*** 将MultipartFile转换为File*** @param outFilePath 参数* @param multiFile 参数* @return 执行结果*/public static File multipartFileToFile(String outFilePath, MultipartFile multiFile) {// 获取文件名if (null == multiFile) {return null;}String fileName = multiFile.getOriginalFilename();if (null == fileName) {return null;}try {File toFile;InputStream ins;ins = multiFile.getInputStream();//指定存储路径toFile = new File(outFilePath.concat(File.separator).concat(multiFile.getOriginalFilename()));inputStreamToFile(ins, toFile);return toFile;} catch (Exception e) {e.printStackTrace();}return null;}private static void inputStreamToFile(InputStream ins, File file) {try (OutputStream os = new FileOutputStream(file)) {int bytesRead;int bytes = 8192;byte[] buffer = new byte[bytes];while ((bytesRead = ins.read(buffer, 0, bytes)) != -1) {os.write(buffer, 0, bytesRead);}ins.close();} catch (Exception e) {e.printStackTrace();}}public static FileItem createFileItem(String filePath, String fileName){String fieldName = "file";FileItemFactory factory = new DiskFileItemFactory(16, null);FileItem item = factory.createItem(fieldName, "text/plain", false,fileName);File newFile = new File(filePath);int bytesRead;int b = 8192;byte[] buffer = new byte[b];try (FileInputStream fis = new FileInputStream(newFile);OutputStream os = item.getOutputStream()) {while ((bytesRead = fis.read(buffer, 0, b)) != -1){os.write(buffer, 0, bytesRead);}} catch (IOException e) {e.printStackTrace();}return item;}/*** 读取文件内容** @return 文件内容*/public static String getFileContent(String filePath) {if (CharSequenceUtil.isBlank(filePath)) {return null;}File file = new File(filePath);StringBuilder sb = new StringBuilder();try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {//构造一个BufferedReader类来读取文件String str;while ((str = br.readLine()) != null) {//使用readLine方法,一次读一行sb.append(str);}} catch (Exception e) {e.printStackTrace();}return sb.toString();}}

最后奉上hutool 工具类包

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId>
</dependency>

MultipartFile和File互转相关推荐

  1. MultipartFile和File互转工具类

    依赖: <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>http ...

  2. MultipartFile与File的互转

    MultipartFile与File的互转 前言 MultipartFile转File 1.FileUtils.copyInputStreamToFile转换 2.multipartFile.tran ...

  3. MultipartFile转为File

    方法一 File file= new File("D:\\filePath"); multipartFile.transferTo(file); 方法二 File file = n ...

  4. MultipartFile 转 File

    作者推荐: import org.apache.commons.io.FileUtils;File file = new File(path);FileUtils.copyInputStreamToF ...

  5. MultipartFile 转File的几种方式

    前言 一.MultipartFile转File 二.代码示例 1.第一种方式 2.第二种方式 3.第三种方式 总结 前言 最近写项目有个需求是上传Excel文件并读取Excel文件中的内容,项目采用的 ...

  6. 将MultipartFile转换为File

    public static File multipartFileToFile(MultipartFile multiFile) {// 获取文件名String fileName = multiFile ...

  7. Spring 之MultipartFile转换File 并鉴别File Mine Type 类型

    常见 MIME 类型列表 扩展名 文档类型 MIME 类型 .aac AAC audio audio/aac .abw AbiWord document application/x-abiword . ...

  8. MultipartFile转File

    前端传过来MultipartFile,后端转为file后删除本地缓存文件 后台接收的需要转换为一个File类型的 接受前端文件: MultipartFile file111 = ((Multipart ...

  9. MultipartFile与File的一些事

    前言 前段时间碰到了中转文件的需求,需要使用HttpClient中转一下文件,过程为: 在实现这个需求的过程中就用得到了MultipartFile与File,而且我对前一个也不是很熟悉.记录一下 什么 ...

最新文章

  1. 为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式...
  2. 1077: 字符串加密
  3. nrf52840 gpiote如何配置中断输入_STM32第四章外部中断管理
  4. 吊炸天的 PHP 7 ,你值得拥有
  5. 【Web安全】PHP与Web表单交互-POST方法与GET方法(看不懂你来打我)
  6. Hyper-V Server 2008 R2 加入活动目录的方法
  7. python diff函数_使用Python创建你自己的diff工具
  8. 达摩院2020十大科技趋势发布:云成IT技术创新中心
  9. c语言中字符怎么表示6,6、C语言中的字符串
  10. android架构图示
  11. UINavigationController 直接pop到指定controllerView的方法
  12. LPDIRECTDRAW7编译错误的解决方法
  13. 【单片机】2.2 AT89S52的引脚功能
  14. 小象学院0基础python视频_[大数据] 小象学院大数据全套视频教程
  15. linux 中 man 命令的介绍
  16. 采集rtsp流摄像头到浏览器实时播放方案
  17. 计算机专业创新点子借鉴,[在计算机教学中应如何开展创新教育]大学生创新创业点子300...
  18. VLOG短视频必备!24个Ins潮流插画风视频短视频模板
  19. CentOS8部署多版本共存Python开发环境
  20. MATLAB学习八(四):相关系数corrcoef

热门文章

  1. CentOS 7.5系统安装使用Mysql 5.7数据库
  2. 目标跟踪:在视频序列中跟踪特定对象的位置和状态
  3. linux uefi转mbr方法,如何将uefi改成mbr分区
  4. 计算机硬盘分区信息,你知道电脑硬盘分区Guid格式和MBR格式有什么区别吗?来看看!...
  5. 3、Dubbo急速入门
  6. HTML中利用JS调用PHP (以登录为例)
  7. c语言51单片机湿度浇花器,基于51单片机的室内自动浇花系统的制作方法
  8. 读书笔记 | 自动驾驶中的雷达信号处理(第9章 汽车雷达的应用概述)
  9. 7-4 余弦函数 (15 分)
  10. 登陆拦截页面报错:localhost 将您重定向的次数过多。 尝试清除 Cookie. ERR_TOO_MANY_REDIRECTS