• Base64编码保存为图片,java工具类


    import com.weiming.so.nova.common.utils.uuid.UUID;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Base64;
    
    public class Base64FileUtil {
    
        /**
         * base64 保存为文件
         * 直接获取系统temp目录,文件名UUID
         * @param base64code base64code
         * @return {@link File}
         * @throws IOException ioexception
         */
        public static File base64ToFile(String base64code) throws IOException {
            String tmpdir = System.getProperty("java.io.tmpdir") + File.separator;
    
            Base64.Decoder decoder = Base64.getDecoder();
            // 前台在用Ajax传base64值的时候会把base64中的+换成空格,所以需要替换回来。
            String baseValue = base64code.replaceAll(" ", "+");
            // 确定第一个逗号,用于截取data:image/jpeg;base64
            int ftIdx = baseValue.indexOf(",") + 1;
            // 文件类型
            String fileType = baseValue.substring(0,ftIdx);
            // 文件内容
            String fileContent = baseValue.substring(ftIdx);
            // 文件后缀
            String fileSuffix =getBase64FileSuffix(fileType);
            // 文件名
            String fileName = UUID.randomUUID() + fileSuffix;
            // 解密
            byte[] b = decoder.decode(fileContent);
            // 创建临时文件
            File file = createFile(tmpdir, fileName);
            // 写入文件
            try(OutputStream outputStream = new FileOutputStream(file)){
                // 处理数据
                for (int i = 0; i < b.length; ++i) {
                    if (b[i] < 0) {
                        b[i] += 256;
                    }
                }
                outputStream.write(b);
                outputStream.flush();
            }
            return file;
        }
    
        /**
         * 得到Base64的文件后缀
         *
         * @param iden iden
         * @return {@link String}
         */
        public static String getBase64FileSuffix(String iden){
            if(iden == null || iden.isEmpty()){
                return null;
            }
            if (iden.contains("jpeg")) {
                return ".jpg";
            }else if(iden.contains("png")){
                return ".png";
            }else if(iden.contains("gif")){
                return ".gif";
            }else if(iden.contains("jpg")){
                return ".jpg";
            }
            return null;
        }
    
        /**
         * 创建临时文件
         *
         * @param filePaht 文件目录
         * @param fileName 文件名称
         * @return {@link File}
         * @throws IOException ioexception
         */
        public static File createFile(String filePaht, String fileName) throws IOException {
            File tempFile = new File(filePaht, fileName);
            if(!tempFile.getParentFile().exists()){
                tempFile.getParentFile().mkdirs();
            }
            if(!tempFile.exists()){
                tempFile.createNewFile();
            }
            return tempFile;
        }
    }
    
    
  • 相关阅读:
    第八周作业
    第八周上机练习
    第七周上机练习
    第六周作业
    第六周上机练习
    第五周上机练习
    第四周作业
    第四次上机作业
    第三周作业
    第一次上机作业
  • 原文地址:https://www.cnblogs.com/inkyi/p/15726199.html
Copyright © 2020-2023  润新知