package cn.hellohao.utils;

import cn.hellohao.pojo.Msg;
import org.apache.tika.Tika;

import javax.imageio.ImageIO;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class TypeDict {
/**
 常用文件的文件头如下：(以前六位为准)
JPEG (jpg)，文件头：FFD8FF 
PNG (png)，文件头：89504E47 
GIF (gif)，文件头：47494638 
TIFF (tif)，文件头：49492A00 
Windows Bitmap (bmp)，文件头：424D 
CAD (dwg)，文件头：41433130 
Adobe Photoshop (psd)，文件头：38425053 
Rich Text Format (rtf)，文件头：7B5C727466 
XML (xml)，文件头：3C3F786D6C 
HTML (html)，文件头：68746D6C3E 
Email [thorough only] (eml)，文件头：44656C69766572792D646174653A 
Outlook Express (dbx)，文件头：CFAD12FEC5FD746F 
Outlook (pst)，文件头：2142444E 
MS Word/Excel (xls.or.doc)，文件头：D0CF11E0 
MS Access (mdb)，文件头：5374616E64617264204A 
WordPerfect (wpd)，文件头：FF575043 
Postscript (eps.or.ps)，文件头：252150532D41646F6265 
Adobe Acrobat (pdf)，文件头：255044462D312E 
Quicken (qdf)，文件头：AC9EBD8F 
Windows Password (pwl)，文件头：E3828596 
ZIP Archive (zip)，文件头：504B0304 
RAR Archive (rar)，文件头：52617221 
Wave (wav)，文件头：57415645 
AVI (avi)，文件头：41564920 
Real Audio (ram)，文件头：2E7261FD 
Real Media (rm)，文件头：2E524D46 
MPEG (mpg)，文件头：000001BA 
MPEG (mpg)，文件头：000001B3 
Quicktime (mov)，文件头：6D6F6F76 
Windows Media (asf)，文件头：3026B2758E66CF11 
MIDI (mid)，文件头：4D546864 
*/
    public static String checkType(String xxxx) {
        
        switch (xxxx) {
        case "FFD8FF": return "jpg";
        case "89504E": return "png";
        case "474946": return "jif";
        case "47494638": return "gif";
        case "424D": return "bmp";
        case "424D36": return "bmp";
        default: return "0000";
        }
    }

    public static Boolean checkImgType(File file) {
        try {
            // 通过ImageReader来解码这个file并返回一个BufferedImage对象
            // 如果找不到合适的ImageReader则会返回null，我们可以认为这不是图片文件
            // 或者在解析过程中报错，也返回false
            Image image = ImageIO.read(file);
            return image != null;
        } catch(IOException ex) {
            return false;
        }
    }

    //apache大法
    public static Msg FileMiME(File file, String suffix){
        final Msg msg = new Msg();
        try {
            Tika tika = new Tika();
            String fileType = tika.detect(file);
            if (fileType != null && fileType.contains("/")) {
                if(fileType.contains("image/")){
                    msg.setData(fileType);
                }else{
                    //非图像类型
                    msg.setCode("110602");
                    msg.setInfo("该文件非图像文件，或不受支持");
                }
            }
        } catch (Exception e) {
            System.err.println("这是一个图像类别鉴定的报错:161");
            msg.setCode("110603");//图像格式不受支持
            msg.setInfo("暂时不能上传该文件");
        }
        return msg;
    }



}