Java附件和base64相互转换

1 文件转base64

声明:我用的是Hutool的Base64下的api
package cn.hutool.core.codec;

首先找一张图片

在这里插入图片描述

很简单,直接使用Base64的encode方法就可以拿到文件的base64码:

	File file = new File("D:\\Tools\\Images\\北极熊.jpg");
	String encode = Base64.encode(file);

通过断点,可以看到附件的base64就是一串很长的字符串。

在这里插入图片描述

2 base64转文件

拿到附件的base64之后,就可以通过该方法进行转换为附件

/** 
     * @description base64转附件     
     * @date 17:17 2023/11/7
     * @param base64 附件的base64码
     * @param filePath 存储路径
     * @return java.io.File
    **/
    public static File base64ToFile(String base64, String filePath) {
        File file = new File(filePath);
        byte[] buffer;
        try {
            BASE64Decoder base64Decoder = new BASE64Decoder();
            buffer = base64Decoder.decodeBuffer(base64);
            FileOutputStream out = new FileOutputStream(filePath);
            out.write(buffer);
            out.close();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return file;
    }

在本地新建文件夹

在这里插入图片描述

调用:

在这里插入图片描述

查看附件,以及通过base64保存到本地了:

在这里插入图片描述

参考代码

完整代码如下,供参考:

package com.test.HutoolTest;

import cn.hutool.core.codec.Base64;
import sun.misc.BASE64Decoder;

import java.io.File;
import java.io.FileOutputStream;


public class Base64Test {
    public static void main(String[] args){
        // 本地附件
        File file = new File("D:\\Tools\\Images\\大裤衩.jpg");
        String encode = Base64.encode(file);
        // base64转为附件
        base64ToFile(encode, "D:\\Tools\\Images\\base64ToFile\\"+file.getName());

    }

    /**
     * @description base64转附件
     * @date 17:17 2023/11/7
     * @param base64 附件的base64码
     * @param filePath 存储路径
     * @return java.io.File
    **/
    public static File base64ToFile(String base64, String filePath) {
        File file = new File(filePath);
        byte[] buffer;
        try {
            BASE64Decoder base64Decoder = new BASE64Decoder();
            buffer = base64Decoder.decodeBuffer(base64);
            FileOutputStream out = new FileOutputStream(filePath);
            out.write(buffer);
            out.close();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return file;
    }
}