java中MultipartFile互转File的方法

网友投稿 494 2022-11-29

java中MultipartFile互转File的方法

目录MultipartFile转FileFile转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();

http:// 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);

MPRyY }

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

添加依赖

org.springframework

spring-mock

2.0.8

代码

/**

* @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 64http://=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]", "");

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SIGIR 2021 DCSpell一个代价比较小的预训练文本纠错的模型
下一篇:spark学习
相关文章

 发表评论

暂时没有评论,来抢沙发吧~