java中MultipartFile互转File的方法
作者:巴黎没有欧莱雅你也不值得被拥有 发布时间:2022-12-14 16:52:09
标签:java,MultipartFile,File
目录
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


猜你喜欢
- 前言: 哲学老师说,看待事物无非是了解它是什么,为什么,怎么做所以,首先,我们先了解一下什么是“内存泄漏”摘自百度的一段话:用动态存储分配函
- 1.Maven依赖<!-- Kettle --><dependency> <grou
- 屏幕切换指的是在同一个Activity内屏幕间的切换,ViewFlipper继承了Framelayout类,ViewAnimator类的作用
- PullToRefresh是一套实现非常好的下拉刷新库,它支持:1.ListView2.ExpandableListView3.GridVi
- c# Invoke与BeginInvoke最近在学习线程时,发现当我创建的线程需要访问UI界面的时,会发生异常,原因是我在跨线程调用主线程的
- ListView和GridViewListView,列表视图,是Android中最重要的组件之一,几乎每个Android应用中都会使用Lis
- 一、代理的概念 * 技术是整个java技术中最重要的一个技术,它是学习java框架的基础,不会 * 技术,那么在学习Spring这些框架
- 目录一 . 前言二 . 流程梳理2.1 实例化创建2.1.1 doGetBean 入口2.1.2 doGetBean 补充节点2.1.3 A
- 目录前言一、如何实现?1、使用ObjectDataProvider2、定义转换器3、绑定容器二、使用示例1.代码2.显示效果前言wpf本身没
- 本文实例通过前面学过的Paint、Canvas等2D绘画技术来实现在手机屏幕上绘制Android机器人。具体代码实现和效果:用来显示自定义的
- 本文实例为大家分享了Android颜色渐变滚动展示的具体代码,供大家参考,具体内容如下public class FlashTextView
- Windows操作系统可以实现重命名文件操作,却不能实现批量重命名。本实例实现了批量重命名功能,可以将一个文件夹内同一类型的文件按照一定的规
- package com.cq2022.zago.base.util;import java.io.FileReader;import jav
- 我们知道Eclipse创建的工程默认是有个assets文件夹的,但是Android studio默认没有帮我们创建,那么我们就自己创建一个就
- 在很多仿真和游戏应用中都需要大规模地形,这样会使3D环境似乎“无限大”,增加用户的真实感,比如飞行模拟游戏。那么在Unity中如何实现大规模
- 概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。Spring Framework对事务管理提供了一致的
- 一、简单介绍翻看Spring的源码时,发现@Bean注解的源码上标注了Since: 3.0,也就是说,@Bean注解是Spring从3.0版
- Java 内存划分: 在Java内存分配中,java将内存分为:方法区,堆,虚拟机栈,本地方法栈,程序计
- 一, eclipse springboot打war包1. 配置pom.xml文件<packaging>war</packa
- static void Main(string[] args){ Process proc = null