yubo
2025-09-24 35cfaa7259f3d494e7bd03aec5c7e035049ee19b
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java
@@ -1,18 +1,17 @@
package cc.mrbird.febs.common.core.utils;
import cc.mrbird.febs.common.core.entity.system.Dic;
import cc.mrbird.febs.common.core.exception.FebsException;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Dict;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;
import cn.hutool.core.io.FileUtil;
import sun.misc.BASE64Decoder;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.zip.ZipEntry;
@@ -20,6 +19,24 @@
@Slf4j
public class MyUtil {
    public static void downloadFile(File file, HttpServletResponse response) throws IOException {
        try (InputStream fin = new FileInputStream(file); ServletOutputStream out = response.getOutputStream()) {
            response.setCharacterEncoding("utf-8");
            response.setContentType("application/x-download");
            response.addHeader("Content-Disposition", "attachment;filename=resume.doc");
            byte[] buffer = new byte[1024];
            int bytesToRead = -1;
            // 通过循环将读入的Word文件的内容输出到浏览器中
            while ((bytesToRead = fin.read(buffer)) != -1) {
                out.write(buffer, 0, bytesToRead);
            }
        } catch (Exception e) {
            log.error("下载文件异常" + e);
            e.printStackTrace();
        }
    }
    public static void  download(HttpServletRequest request, HttpServletResponse response, List<File> files , List<String> fileName){
        //设置压缩包的名字
@@ -91,8 +108,8 @@
        if (file.getSize() <= 0) {
            throw new FebsException("上传的文件大小需要大于0kb");
        }
        if (file.getSize() > 50 * 1024* 1024) {
            throw new FebsException("上传的文件大于50M");
        if (file.getSize() > 200 * 1024* 1024) {
            throw new FebsException("上传的文件大于200M");
        }
        if (!FileUtil.exist(uploadPpath)) {
            FileUtil.mkdir(uploadPpath);
@@ -100,15 +117,118 @@
        //原本名字
        String fileName = file.getOriginalFilename();
        String suffix = "";
        if (fileName.indexOf(".") > 0) {
        if (fileName.lastIndexOf(".") > 0) {
            //后缀
            suffix = fileName.substring(fileName.indexOf("."), fileName.length());
            suffix = fileName.substring(fileName.lastIndexOf("."));
        }
        //生成新的名字
        String newName = nextIdStr + suffix;
        //上传
        file.transferTo(new File(uploadPpath + newName));
        return Dict.create().set("fileName",fileName).set("suffix",suffix).set("newName",newName);
    }
    public static Dict filesUpload(MultipartFile file, String uploadPpath) throws FebsException, IOException {
        if (file.isEmpty()) {
            throw new FebsException("上传的文件不能为空!请重新上传");
        }
        if (file.getSize() <= 0) {
            throw new FebsException("上传的文件大小需要大于0kb");
        }
        if (file.getSize() > 200 * 1024* 1024) {
            throw new FebsException("上传的文件大于200M");
        }
        if (!FileUtil.exist(uploadPpath)) {
            FileUtil.mkdir(uploadPpath);
        }
        //原本名字
        String fileName = file.getOriginalFilename();
        String suffix = "";
        if (fileName.lastIndexOf(".") > 0) {
            //后缀
            suffix = fileName.substring(fileName.lastIndexOf("."));
        }
        if(FileUtil.exist(uploadPpath + fileName)){
            throw  new FebsException("文件已经存在");
        }
        //上传
        file.transferTo(new File(uploadPpath + fileName));
        return Dict.create().set("fileName",fileName).set("suffix",suffix);
    }
    /**
     *      对字节数组字符串进行Base64解码并生成图片
      */
    public static boolean generateImage(String imgStr,String url) {
        if (imgStr == null) {
            // 图像数据为空
            return false;
        }
        imgStr = imgStr.split(",")[1];
                BASE64Decoder decoder = new BASE64Decoder();
        try {
            // Base64解码
            byte[] b = decoder.decodeBuffer(imgStr);
            for (int i = 0; i < b.length; ++i) {
                // 调整异常数据
                if (b[i] < 0) {
                    b[i] += 256;
                }
            }
            // 生成jpeg图片
            String imgFilePath = url;
            OutputStream out = new FileOutputStream(imgFilePath);
            out.write(b);
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            return false;
        }
    }
    /**
     * 将base64字符串,生成文件
     */
    public static File convertBase64ToFile(String fileBase64String, String filePath, String fileName) {
        BufferedOutputStream bos = null;
        FileOutputStream fos = null;
        File file = null;
        try {
            File dir = new File(filePath);
            if (!dir.exists() && dir.isDirectory()) {//判断文件目录是否存在
                dir.mkdirs();
            }
            BASE64Decoder decoder = new BASE64Decoder();
            byte[] bfile = decoder.decodeBuffer(fileBase64String);
            file = new File(filePath + File.separator + fileName);
            fos = new FileOutputStream(file);
            bos = new BufferedOutputStream(fos);
            bos.write(bfile);
            return file;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            if (bos != null) {
                try {
                    bos.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
    }
}