千家信息网

java中MultipartFile和File如何互转

发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,这篇文章主要为大家展示了"java中MultipartFile和File如何互转",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"java中Multipart
千家信息网最后更新 2025年11月17日java中MultipartFile和File如何互转

这篇文章主要为大家展示了"java中MultipartFile和File如何互转",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"java中MultipartFile和File如何互转"这篇文章吧。

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

添加依赖

    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 base64=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]", "");

以上是"java中MultipartFile和File如何互转"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0