package com.securitycontrol.common.core.utils.file;

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.Objects;

/**
 * 文件类型工具类
 *
 * @author czc
 */
public class FileTypeUtils
{
    /**
     * 获取文件类型
     * <p>
     * 例如: czc.txt, 返回: txt
     *
     * @param file 文件名
     * @return 后缀（不含".")
     */
    public static String getFileType(File file)
    {
        if (null == file)
        {
            return StringUtils.EMPTY;
        }
        return getFileType(file.getName());
    }

    /**
     * 获取文件类型
     * <p>
     * 例如: czc.txt, 返回: txt
     *
     * @param fileName 文件名
     * @return 后缀（不含".")
     */
    public static String getFileType(String fileName)
    {
        int separatorIndex = fileName.lastIndexOf(".");
        if (separatorIndex < 0)
        {
            return "";
        }
        return fileName.substring(separatorIndex + 1).toLowerCase();
    }

    /**
     * 获取文件名的后缀
     *
     * @param file 表单文件
     * @return 后缀名
     */
    public static final String getExtension(MultipartFile file)
    {
        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
        if (StringUtils.isEmpty(extension))
        {
            extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
        }
        return extension;
    }

    /**
     * 获取文件类型
     *
     * @param photoByte 文件字节码
     * @return 后缀（不含".")
     */
    public static String getFileExtendName(byte[] photoByte)
    {
        String strFileExtendName = "JPG";
        int mum1=71,num2=73,num3=70,num4=56,num5=55,num6=57,num7=97,num8=74,num9=70,num10=66,num11=77,num12=80,num13=78;
        int i0=0,i1=1,i2=2,i3=3,i4=4,i5=5,i6=6,i7=7,i8=8,i9=9;
        if ((photoByte[i0] == mum1)&& (photoByte[i1] == num2) && (photoByte[i2]==num3) && (photoByte[i3] == num4)  && (photoByte[i5] == num7)){
            if((photoByte[i4] == num5) || (photoByte[i4] == num6)){
                strFileExtendName = "GIF";
            }
        } else if ((photoByte[i6] == num8) && (photoByte[i7] == num9) && (photoByte[i8] == num2) && (photoByte[i9] == num9)) {
            strFileExtendName = "JPG";
        }
        else if ((photoByte[i0] == num10) && (photoByte[i1] == num11))
        {
            strFileExtendName = "BMP";
        }
        else if ((photoByte[i1] == num12) && (photoByte[i2] == num13) && (photoByte[i3] == mum1))
        {
            strFileExtendName = "PNG";
        }
        return strFileExtendName;
    }
}