java上传文件以流方式判断类型

  1. package com.omg.utils;  
  2.    
  3. /** 
  4.  * 文件类型枚取 
  5.  */  
  6. public enum FileType {  
  7.     /** 
  8.      * JEPG. 
  9.      */  
  10.     JPEG("FFD8FF"),  
  11.   
  12.     /** 
  13.      * PNG. 
  14.      */  
  15.     PNG("89504E47"),  
  16.   
  17.     /** 
  18.      * GIF. 
  19.      */  
  20.     GIF("47494638"),  
  21.   
  22.     /** 
  23.      * TIFF. 
  24.      */  
  25.     TIFF("49492A00"),  
  26.   
  27.     /** 
  28.      * Windows Bitmap. 
  29.      */  
  30.     BMP("424D"),  
  31.   
  32.     /** 
  33.      * CAD. 
  34.      */  
  35.     DWG("41433130"),  
  36.   
  37.     /** 
  38.      * Adobe Photoshop. 
  39.      */  
  40.     PSD("38425053"),  
  41.   
  42.     /** 
  43.      * Rich Text Format. 
  44.      */  
  45.     RTF("7B5C727466"),  
  46.   
  47.     /** 
  48.      * XML. 
  49.      */  
  50.     XML("3C3F786D6C"),  
  51.   
  52.     /** 
  53.      * HTML. 
  54.      */  
  55.     HTML("68746D6C3E"),  
  56.     /** 
  57.      * CSS. 
  58.      */  
  59.     CSS("48544D4C207B0D0A0942"),  
  60.     /** 
  61.      * JS. 
  62.      */  
  63.     JS("696B2E71623D696B2E71"),  
  64.     /** 
  65.      * Email [thorough only]. 
  66.      */  
  67.     EML("44656C69766572792D646174653A"),  
  68.   
  69.     /** 
  70.      * Outlook Express. 
  71.      */  
  72.     DBX("CFAD12FEC5FD746F"),  
  73.   
  74.     /** 
  75.      * Outlook (pst). 
  76.      */  
  77.     PST("2142444E"),  
  78.   
  79.     /** 
  80.      * MS Word/Excel. 
  81.      */  
  82.     XLS_DOC("D0CF11E0"), XLSX_DOCX("504B030414000600080000002100"),  
  83.     /** 
  84.      * Visio 
  85.      */  
  86.     VSD("d0cf11e0a1b11ae10000"),  
  87.     /** 
  88.      * MS Access. 
  89.      */  
  90.     MDB("5374616E64617264204A"),  
  91.     /** 
  92.      * WPS文字wps、表格et、演示dps都是一样的 
  93.      */  
  94.     WPS("d0cf11e0a1b11ae10000"),  
  95.     /** 
  96.      * torrent 
  97.      */  
  98.     TORRENT("6431303A637265617465"),  
  99.     /** 
  100.      * WordPerfect. 
  101.      */  
  102.     WPD("FF575043"),  
  103.   
  104.     /** 
  105.      * Postscript. 
  106.      */  
  107.     EPS("252150532D41646F6265"),  
  108.   
  109.     /** 
  110.      * Adobe Acrobat. 
  111.      */  
  112.     PDF("255044462D312E"),  
  113.   
  114.     /** 
  115.      * Quicken. 
  116.      */  
  117.     QDF("AC9EBD8F"),  
  118.   
  119.     /** 
  120.      * Windows Password. 
  121.      */  
  122.     PWL("E3828596"),  
  123.   
  124.     /** 
  125.      * ZIP Archive. 
  126.      */  
  127.     ZIP("504B0304"),  
  128.   
  129.     /** 
  130.      * RAR Archive. 
  131.      */  
  132.     RAR("52617221"),  
  133.     /** 
  134.      * JSP Archive. 
  135.      */  
  136.     JSP("3C2540207061676520"),  
  137.     /** 
  138.      * JAVA Archive. 
  139.      */  
  140.     JAVA("7061636B61676520"),  
  141.     /** 
  142.      * CLASS Archive. 
  143.      */  
  144.     CLASS("CAFEBABE0000002E00"),  
  145.     /** 
  146.      * JAR Archive. 
  147.      */  
  148.     JAR("504B03040A000000"),  
  149.     /** 
  150.      * MF Archive. 
  151.      */  
  152.     MF("4D616E69666573742D56"),  
  153.     /** 
  154.      *EXE Archive. 
  155.      */  
  156.     EXE("4D5A9000030000000400"),  
  157.     /** 
  158.      *CHM Archive. 
  159.      */  
  160.     CHM("49545346030000006000"),  
  161.     /* 
  162.      * INI("235468697320636F6E66"), SQL("494E5345525420494E54"), BAT( 
  163.      * "406563686F206f66660D"), GZ("1F8B0800000000000000"), PROPERTIES( 
  164.      * "6C6F67346A2E726F6F74"), MXP( 
  165.      * "04000000010000001300"), 
  166.      */  
  167.     /** 
  168.      * Wave. 
  169.      */  
  170.     WAV("57415645"),  
  171.   
  172.     /** 
  173.      * AVI. 
  174.      */  
  175.     AVI("41564920"),  
  176.   
  177.     /** 
  178.      * Real Audio. 
  179.      */  
  180.     RAM("2E7261FD"),  
  181.   
  182.     /** 
  183.      * Real Media. 
  184.      */  
  185.     RM("2E524D46"),  
  186.   
  187.     /** 
  188.      * MPEG (mpg). 
  189.      */  
  190.     MPG("000001BA"),  
  191.   
  192.     /** 
  193.      * Quicktime. 
  194.      */  
  195.     MOV("6D6F6F76"),  
  196.   
  197.     /** 
  198.      * Windows Media. 
  199.      */  
  200.     ASF("3026B2758E66CF11"),  
  201.   
  202.     /** 
  203.      * MIDI. 
  204.      */  
  205.     MID("4D546864"),  
  206.     /** 
  207.      * MP4. 
  208.      */  
  209.     MP4("00000020667479706d70"),  
  210.     /** 
  211.      * MP3. 
  212.      */  
  213.     MP3("49443303000000002176"),  
  214.     /** 
  215.      * FLV. 
  216.      */  
  217.     FLV("464C5601050000000900");  
  218.     private String value = "";  
  219.   
  220.     /** 
  221.      * Constructor. 
  222.      *  
  223.      * @param type 
  224.      */  
  225.     private FileType(String value) {  
  226.         this.value = value;  
  227.     }  
  228.   
  229.     public String getValue() {  
  230.         return value;  
  231.     }  
  232.   
  233.     public void setValue(String value) {  
  234.         this.value = value;  
  235.     }  
  236.   
  237. }  



[java]  view plain  copy
 
  1. package com.omg.utils;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5.   
  6. /** 
  7.  * 文件类型判断类 
  8.  */  
  9. public final class FileTypeJudge {  
  10.   
  11.     /** 
  12.      * Constructor 
  13.      */  
  14.     private FileTypeJudge() {  
  15.     }  
  16.   
  17.     /** 
  18.      * 将文件头转换成16进制字符串 
  19.      *  
  20.      * @param 原生byte 
  21.      * @return 16进制字符串 
  22.      */  
  23.     private static String bytesToHexString(byte[] src) {  
  24.   
  25.         StringBuilder stringBuilder = new StringBuilder();  
  26.         if (src == null || src.length <= 0) {  
  27.             return null;  
  28.         }  
  29.         for (int i = 0; i < src.length; i++) {  
  30.             int v = src[i] & 0xFF;  
  31.             String hv = Integer.toHexString(v);  
  32.             if (hv.length() < 2) {  
  33.                 stringBuilder.append(0);  
  34.             }  
  35.             stringBuilder.append(hv);  
  36.         }  
  37.         return stringBuilder.toString();  
  38.     }  
  39.   
  40.     /** 
  41.      * 得到文件头 
  42.      *  
  43.      * @param filePath 
  44.      *            文件路径 
  45.      * @return 文件头 
  46.      * @throws IOException 
  47.      */  
  48.     private static String getFileContent(InputStream is) throws IOException {  
  49.   
  50.         byte[] b = new byte[28];  
  51.   
  52.         InputStream inputStream = null;  
  53.   
  54.         try {  
  55.             is.read(b, 028);  
  56.         } catch (IOException e) {  
  57.             e.printStackTrace();  
  58.             throw e;  
  59.         } finally {  
  60.             if (inputStream != null) {  
  61.                 try {  
  62.                     inputStream.close();  
  63.                 } catch (IOException e) {  
  64.                     e.printStackTrace();  
  65.                     throw e;  
  66.                 }  
  67.             }  
  68.         }  
  69.         return bytesToHexString(b);  
  70.     }  
  71.   
  72.     /** 
  73.      * 判断文件类型 
  74.      *  
  75.      * @param filePath 
  76.      *            文件路径 
  77.      * @return 文件类型 
  78.      */  
  79.     public static FileType getType(InputStream is) throws IOException {  
  80.   
  81.         String fileHead = getFileContent(is);  
  82.   
  83.         if (fileHead == null || fileHead.length() == 0) {  
  84.             return null;  
  85.         }  
  86.   
  87.         fileHead = fileHead.toUpperCase();  
  88.   
  89.         FileType[] fileTypes = FileType.values();  
  90.   
  91.         for (FileType type : fileTypes) {  
  92.             if (fileHead.startsWith(type.getValue())) {  
  93.                 return type;  
  94.             }  
  95.         }  
  96.   
  97.         return null;  
  98.     }  
  99.   
  100.     public static Integer isFileType(FileType value) {  
  101.         Integer type = 7;// 其他  
  102.         // 图片  
  103.         FileType[] pics = { FileType.JPEG, FileType.PNG, FileType.GIF, FileType.TIFF, FileType.BMP, FileType.DWG, FileType.PSD };  
  104.   
  105.         FileType[] docs = { FileType.RTF, FileType.XML, FileType.HTML, FileType.CSS, FileType.JS, FileType.EML, FileType.DBX, FileType.PST, FileType.XLS_DOC, FileType.XLSX_DOCX, FileType.VSD,  
  106.                 FileType.MDB, FileType.WPS, FileType.WPD, FileType.EPS, FileType.PDF, FileType.QDF, FileType.PWL, FileType.ZIP, FileType.RAR, FileType.JSP, FileType.JAVA, FileType.CLASS,  
  107.                 FileType.JAR, FileType.MF, FileType.EXE, FileType.CHM };  
  108.   
  109.         FileType[] videos = { FileType.AVI, FileType.RAM, FileType.RM, FileType.MPG, FileType.MOV, FileType.ASF, FileType.MP4, FileType.FLV, FileType.MID };  
  110.   
  111.         FileType[] tottents = { FileType.TORRENT };  
  112.   
  113.         FileType[] audios = { FileType.WAV, FileType.MP3 };  
  114.   
  115.         FileType[] others = {};  
  116.   
  117.         // 图片  
  118.         for (FileType fileType : pics) {  
  119.             if (fileType.equals(value)) {  
  120.                 type = 1;  
  121.             }  
  122.         }  
  123.         // 文档  
  124.         for (FileType fileType : docs) {  
  125.             if (fileType.equals(value)) {  
  126.                 type = 2;  
  127.             }  
  128.         }  
  129.         // 视频  
  130.         for (FileType fileType : videos) {  
  131.             if (fileType.equals(value)) {  
  132.                 type = 3;  
  133.             }  
  134.         }  
  135.         // 种子  
  136.         for (FileType fileType : tottents) {  
  137.             if (fileType.equals(value)) {  
  138.                 type = 4;  
  139.             }  
  140.         }  
  141.         // 音乐  
  142.         for (FileType fileType : audios) {  
  143.             if (fileType.equals(value)) {  
  144.                 type = 5;  
  145.             }  
  146.         }  
  147.         return type;  
  148.     }  
  149.   
  150.     public static void main(String args[]) throws Exception {  
  151.         // System.out.println(FileTypeJudge.getType(new FileInputStream("")));  
  152.         for (FileType type : FileType.values()) {  
  153.             System.out.print(type + "\t");  
  154.         }  
  155.     }  
  156. }  

原文出自:http://blog.csdn.net/zwx19921215/article/details/45504555

你可能感兴趣的:(java)