import org.springframework.web.multipart.MultipartFile;


/**
 *  文件大小校验工具类
 * @author 
 * @date 2023年8月17日20:09:06
 */
public class MultipartFileUtil {

    /**
     * //文件上传限制大小
     */
    private final static Integer FILE_SIZE = 5;
    /**
     * //文件上传限制单位(B,K,M,G)
     */
    private final static String FILE_UNIT = "M";

    /**
     * @param len  文件长度
     * @param size 限制大小
     * @param unit 限制单位(B,K,M,G)
     * @描述 判断文件大小
     */
    public static boolean checkFileSize(Long len, int size, String unit) {
        double fileSize = 0;
        if ("B".equalsIgnoreCase(unit)) {
            fileSize = (double) len;
        } else if ("K".equalsIgnoreCase(unit)) {
            fileSize = (double) len / 1024;
        } else if ("M".equalsIgnoreCase(unit)) {
            fileSize = (double) len / 1048576;
        } else if ("G".equalsIgnoreCase(unit)) {
            fileSize = (double) len / 1073741824;
        }
        return !(fileSize > size);
    }


    /**
     * 文件上传调用
     * @param file
     * @return
     */
    public static boolean checkFileSize(MultipartFile file) {
        boolean flag = checkFileSize(file.getSize(), FILE_SIZE, FILE_UNIT);
        if (!flag) {
            throw new RuntimeException("上传文件大小超出限制");
        }
        return true;
    }


    /**
     * 文件上传调用
     * @param file
     * @param fileSize 文件大小
     * @param fileUnit 文件单位
     * @return
     */
    public static boolean checkFileSize(MultipartFile file,Integer fileSize,String fileUnit) {
        boolean flag = checkFileSize(file.getSize(), fileSize, fileUnit);
        if (!flag) {
            throw new RuntimeException("上传文件大小超出限制");
        }
        return true;
    }

}