java中MultipartFile和File最简单的互相转换示例
MultipartFile和File 的区别
MuitipartFile 是 Spring 框架中用来处理文件上传的接口,它封装了文件上传的信息,比如文件名、文件类型等。
File 是Java 标准库中提供的文件操作类,用于描述文件信息,比如文件路径、文件大小等
总的来说,MultipantFile 是用来处理文件上传的,而 File 则是用来描述文件信息的。
MultipartFile 与 File 的 互相转换
1. MultipartFile 转 File
最常见的方式(通过文件流写入):
public File multipartFile2File (MultipartFile multipartFile) {
// 创建临时文件
String path = "export/demo.xlsx";
File file = new File(path);
InputStream inputStream = null;
FileOutputStream outputStream = null;
try {
// 获取文件输入流
inputStream = multipartFile.getInputStream();
if (!file.exists()) {
file.createNewFile();
}
// 创建输出流
outputStream = new FileOutputStream(file);
byte[] bytes = new byte[1024];
int len;
// 写入到创建的临时文件
while ((len = inputStream.read(bytes)) > 0) {
outputStream.write(bytes, 0, len);
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
// 关流
try {
if (outputStream != null) {
outputStream.close();
}
if (outputStream != null) {
inputStream.close();
}
outputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return file;
}最简单的方式:
使用Spring中的FileCpopyUtils类的copy()方法将MultipartFile 转换为File类型
public File multipartFile2File (MultipartFile multipartFile) {
String path = "export/demo.xlsx";
File file = new File(path);
try {
if (!file.exists()) {
file.createNewFile();
}
// 底层也是通过io流写入文件file
FileCopyUtils.copy(multipartFile.getBytes(), file);
} catch (Exception e) {
throw new RuntimeException(e);
}
return file;
}2. File 转 MultipartFile
使用org.springframework.mock.web.MockMultipartFile 需要导入spring-test.jar
public MultipartFile file2MultipartFile () {
String path = "export/demo.xlsx";
File file = new File(path);
MultipartFile multipartFile;
try {
FileInputStream fileInputStream = new FileInputStream(file);
multipartFile = new MockMultipartFile("copy"+file.getName(),file.getName(), ContentType.APPLICATION_OCTET_STREAM.toString(),fileInputStream);
System.out.println(multipartFile.getName()); // 输出demo.xlsx
fileInputStream.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
return multipartFile;
}使用CommonsMultipartFile
public MultipartFile file2MultipartFile () {
String path = "export/demo.xlsx";
File file = new File(path);
MultipartFile multipartFile;
try {
DiskFileItem fileItem2 = (DiskFileItem) new DiskFileItemFactory().createItem("file", ContentType.MULTIPART.getValue(), true, file.getName());
//也可以用IOUtils.copy(inputStream,os);
Files.copy(Paths.get(file.getAbsolutePath()), fileItem2.getOutputStream());
multipartFile = new CommonsMultipartFile(fileItem2);
} catch (Exception e) {
throw new RuntimeException(e);
}
return multipartFile;
}总结
到此这篇关于java中MultipartFile和File最简单的互相转换的文章就介绍到这了,更多相关java MultipartFile和File互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot+swagger2.10.5+mybatis-plus 入门详解
这篇文章主要介绍了springboot+swagger2.10.5+mybatis-plus 入门,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-12-12
springcloud3 Sentinel的搭建及案例操作方法
Sentinel是分布式系统流量控制的哨兵,阿里开源的一套服务容错的综合性解决方案,这篇文章主要介绍了springcloud3 Sentinel的搭建以及案例操作,需要的朋友可以参考下2023-01-01
Spring Boot集成Swagger接口分类与各元素排序问题
这篇文章主要介绍了Spring Boot集成Swagger接口分类与各元素排序问题,首先我们需要对Swagger中的接口也就是以Controller 层作为第一级梯度进行组织的,Controller在我们实际开发中,与其他具体接口之间是存在一对多的关系,本文给大家介绍的非常详细,需要的朋友参考下吧2023-10-10
Java使用RandomAccessFile类对文件进行读写
本篇文章主要介绍了Java使用RandomAccessFile类对文件进行读写,详细的介绍了RandomAccessFile类的使用技巧和实例应用,有兴趣的可以了解一下2017-04-04


最新评论