文件上传/回显路径工具类 传入base64

package com.hlkj.electricity.util;

import lombok.extern.log4j.Log4j2;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Calendar;
import java.util.UUID;

/**
 *
 *  将图片的base64编码转变成图片上传到服务器
 * @author liubo
 * @date 2022/12/8 09:13
 */
@Log4j2
@Component
public class Base64ImageUtils {


    /**
     * 文件上传路径
     */
    @Value("${path.uploadBasePath}")
    private String uploadBasePath;
    /**
     * 文件回显路径
     */
    @Value("${path.showPath}")
    private String showPath;


    /**
     * 返回回显路径进行保存
     * @param imagePath
     * @return
     * @author liubo
     */
    public String uploadFile(String imagePath){
        // 生成图片路径和文件名
        Calendar cal = Calendar.getInstance();
        int month = cal.get(Calendar.MONTH) + 1;
        int year = cal.get(Calendar.YEAR);
        String path = "/"+year+month+"/";

        //base64编码转换
        Base64 decoder = new Base64();
        byte[] b = decoder.decode(imagePath);
        // 调整异常数据
        for (int i = 0; i < b.length; ++i) {
            if (b[i] < 0) {
                b[i] += 256;
            }
        }

        //文件目录不存在创建目录
        File file  = new File(uploadBasePath + path);
        if (!file.exists()) {
            file.mkdirs();
        }
        //文件名称
        String fileName = UUID.randomUUID().toString().replaceAll("-","")+".png";

        //文件上传
        try(FileOutputStream out = new FileOutputStream(uploadBasePath + path + fileName)){
            out.write(b);
            out.flush();
            out.close();
        }catch (Exception e){
            log.error("文件上次失败==[{}]",e);
        }

        log.info("文件上传成功!");
        String uploadPath = showPath + path +fileName;
        log.info("图片回显路径==[{}]",uploadPath);
        return uploadPath;
    }


}

 

posted @ 2022-12-09 16:15  jiuchengi  阅读(64)  评论(0编辑  收藏  举报