怎么判断下传的图片是否是正真的图片 防止下传恶意的非图片文件

如何判断上传的图片是否是正真的图片 防止上传恶意的非图片文件Java代码:final String JPG ffd8ffe0/

如何判断上传的图片是否是正真的图片 防止上传恶意的非图片文件
Java代码:  

  1. final String JPG = "ffd8ffe0";//魔幻数字  
  2. final char[] HEX = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};  
  3. InputStream in = ClassLoader.getSystemClassLoader().getResourceAsStream("1.jpg");  
  4. int len = JPG.length()/2 + JPG.length()%2;  
  5. byte[] bs = new byte[len];  
  6. if( in.read(bs) == len ){  
  7.     StringBuilder sb = new StringBuilder();  
  8.     for(byte i=0;i<bs.length;i++){  
  9.         int high = bs[i]>>>4&0xF;  
  10.         int low  = bs[i]&0xF;  
  11.         sb.append(HEX[high]).append(HEX[low]);  
  12.     }  
  13.     System.out.println(JPG.startsWith(JPG));  
  14. }  
  15. in.close();  

 原文参考自站长中心:http://www.software8.co/wzjs/java/2993.html

几种常规图片格式的“魔幻数字”File typeTypical extensionHex digits xx = variableBitmap format.bmp42 4dGIF format.gif47 49 46 38JPEG File Interchange Format.jpgff d8 ff e0PNG format.png89 50 4e 47