欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Base64与File之间的相互转化方式

程序员文章站 2022-03-03 09:19:17
目录base64与file的相互转化问题需要注意将base64转为文件并保存base64与file的相互转化问题最近遇到一个上传文件的问题,前端使用了另一种传值,就是base64字符串传给后台 ,一开...

base64与file的相互转化

问题

最近遇到一个上传文件的问题,前端使用了另一种传值,就是base64字符串传给后台 ,一开始没有对其进行解码操作,存入数据库时就超长了,今天这里提供一种base64和file之间相互转化的工具类,以便日后参考

/**
     *
     * @param path
     * @return string
     * @description 将文件转base64字符串
     * @date 2018年3月20日
     * @author changyl
     * file转成编码成base64
     */
 
    public static  string filetobase64(string path) {
        string base64 = null;
        inputstream in = null;
        try {
            file file = new file(path);
            in = new fileinputstream(file);
            byte[] bytes=new byte[(int)file.length()];
            in.read(bytes);
            base64 = base64.getencoder().encodetostring(bytes);
        } catch (exception e) {
            e.printstacktrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (ioexception e) {
                    e.printstacktrace();
                }
            }
        }
        return base64;
    }
//base64解码成file文件
    public static void base64tofile(string destpath,string base64, string filename) {
        file file = null;
        //创建文件目录
        string filepath=destpath;
        file  dir=new file(filepath);
        if (!dir.exists() && !dir.isdirectory()) {
            dir.mkdirs();
        }
        bufferedoutputstream bos = null;
        java.io.fileoutputstream fos = null;
        try {
            byte[] bytes = base64.getdecoder().decode(base64);
            file=new file(filepath+"/"+filename);
            fos = new java.io.fileoutputstream(file);
            bos = new bufferedoutputstream(fos);
            bos.write(bytes);
        } catch (exception e) {
            e.printstacktrace();
        } finally {
            if (bos != null) {
                try {
                    bos.close();
                } catch (ioexception e) {
                    e.printstacktrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (ioexception e) {
                    e.printstacktrace();
                }
            }
        }
    }

需要注意

标红的base64在这里需要去掉

basestr = basestr.replace("data:image/jpeg;base64,", "");//base64解密部分乱码问题(“+” 号,在urlecode编码中会被解码成空格)

将base64转为文件并保存

public static void base64tofile(string base64, string filename, string savepath) {
        file file = null;
        //创建文件目录
        string filepath = savepath;
        file dir = new file(filepath);
        if (!dir.exists() && !dir.isdirectory()) {
                dir.mkdirs();
        }
        bufferedoutputstream bos = null;
        java.io.fileoutputstream fos = null;
        try {
            byte[] bytes = base64.getdecoder().decode(base64);
            file=new file(filepath + filename);
            fos = new java.io.fileoutputstream(file);
            bos = new bufferedoutputstream(fos);
            bos.write(bytes);
        } catch (exception e) {
            e.printstacktrace();
        } finally {
            if (bos != null) {
                try {
                    bos.close();
                } catch (ioexception e) {
                    e.printstacktrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (ioexception e) {
                    e.printstacktrace();
                }
            }
        }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。