java中MultipartFile互转File的方法
作者:巴黎没有欧莱雅你也不值得被拥有 时间:2022-12-14 16:52:09
目录
MultipartFile转File
File转MultipartFile
PS:file转base64字符串
MultipartFile转File
公司业务遇到需要接收前台提交过来的图片或文件(multipart/form-data)类型的(ps:不知道有没有拼错嘻嘻)
后台接收的需要转换为一个File类型的
那么这里涉及到了类型转换的问题:
先列下我的代码:
@PostMapping("upload")
@ResponseBody
public void upload(HttpServletResponse response,MultipartFile file)throws IOException{
//MultipartFile file = ((MultipartHttpServletRequest) request).getFile("file");
PrintWriter writer = response.getWriter();
File f = null;
if(file.equals("")||file.getSize()<=0){
file = null;
}else{
InputStream ins = file.getInputStream();
f=new File(file.getOriginalFilename());
FileUtil.inputStreamToFile(ins, f);
}
JSONObject jsonObject= weChatMaterialService.getMediaId("image",f);
writer.print(jsonObject);
writer.flush();
writer.close();
File del = new File(f.toURI());
del.delete();
System.out.println(jsonObject);
}
现在来剖析下:就是判断下我接收的文件是不是空的,如果不是空的就将它转换成为流的形式
后面那个FileUtil就是将流转换成File,最后一步就是因为这样做法会在项目的根目录下(好像是根目录,我也不确定,也是现学现用的嘻嘻)生成一个 文件,这个是我们不需要的对嘛,然后将其删除就行啦
File f = null;
if(file.equals("")||file.getSize()<=0){
file = null;
}else{
InputStream ins = file.getInputStream();
f=new File(file.getOriginalFilename());
FileUtil.inputStreamToFile(ins, f);
}
public class FileUtil {
public static void inputStreamToFile(InputStream ins, File file) {
try {
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
File del = new File(f.toURI());
del.delete();
File转MultipartFile
添加依赖
<!-- https://mvnrepository.com/artifact/org.springframework/spring-mock -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-mock</artifactId>
<version>2.0.8</version>
</dependency>
代码
/**
* @param
* @return
* @author:liuyu
* @创建日期:2020年3月5日
* @功能说明:File转MultipartFile
*/
private static MultipartFile fileToMultipartFile(File file) throws Exception {
InputStream inputStream = new FileInputStream(file);
MultipartFile multipartFile = new MockMultipartFile(file.getName(), inputStream);
return multipartFile;
}
PS:file转base64字符串
① java之文件转为base64字符
FileInputStream inputFile = new FileInputStream(f);
String base 64=null;
byte[] buffer = new byte[(int) f.length()];
inputFile.read(buffer);
inputFile.close();
base64=new BASE64Encoder().encode(buffer);
②注意:java中在使用BASE64Enconder().encode(buffer)会出现字符串换行问题,这是因为RFC 822中规定,每72个字符中加一个换行符号,这样会造成在使用base64字符串时出现问题,所以我们在使用时要先解决换行的问题
String encoded = base64.replaceAll("[\\s*\t\n\r]", "");
来源:https://blog.csdn.net/lp15203883326/article/details/82879973
标签:java,MultipartFile,File
0
投稿
猜你喜欢
Java反射机制基础详解
2023-07-17 04:36:29
java实现字符串和数字转换工具
2021-08-28 15:50:19
Android Studio轻松构建自定义模板的步骤记录
2023-07-19 01:11:51
使用 C# 下载文件的多种方法小结
2023-11-08 06:59:37
PowerManagerService之手动灭屏流程示例分析
2023-01-13 17:11:51
异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?
2023-12-17 01:03:21
Spring源码解析 Bean属性填充
2021-06-28 19:17:16
C#添加、获取、删除PDF附件实例代码
2023-06-23 11:41:46
Android开发笔记之:返回键的复写onBackPressed()介绍
2022-04-29 17:54:40
java实现快速排序图文详解
2022-10-11 16:35:18
java关键字final使用方法详解
2023-11-28 22:38:04
Android用PopupWindow实现自定义Dailog
2023-11-03 13:34:57
解决springboot 启动找不到主类的问题
2023-06-13 04:58:56
Java4Android开发教程(一)JDK安装与配置
2022-02-04 22:33:12
List转换成DataSet实现代码
2023-03-02 04:46:01
Mybatis 复杂对象resultMap的使用
2023-10-12 22:56:44
详解Spring ApplicationContext加载过程
2023-07-17 01:07:43
SpringMVC编程使用Controller接口实现控制器实例代码
2023-02-01 02:03:36
c# 单例模式的实现
2023-06-12 01:16:44
Maven 主模块和子模块pom.xml依赖声明
2022-09-12 21:20:10