以16进制的方式判断文件上传的类型
2018-01-04 14:12
489 查看
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class FileTypeUtil { private FileTypeUtil() { } /** * 把文件头转换成16进制 * @param src * @return */ private static String bytesToHexString(byte[] src) { StringBuilder sb = new StringBuilder(); if (src == null || src.length < 0) { return null; } for (int i = 0; i < src.length; i++) { int h = src[i] & 0xFF; String hv = Integer.toHexString(h); if (hv.length() < 2) { sb.append(0); } sb.append(hv); } return sb.toString().toUpperCase(); } private static String getFileContent(String filePath) { byte[] bytes = new byte[28]; File file = new File(filePath); if(!file.exists()){ return null; } FileInputStream fileInputStream; try { fileInputStream = new FileInputStream(file); fileInputStream.read(bytes, 0, 28); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bytesToHexString(bytes); } public static FileType getFileType(String filePath) { if (filePath == null || filePath == "") { return null; } String fileContent = getFileContent(filePath); if (fileContent == null || fileContent == "") { return null; } FileType[] fileTypes = FileType.values(); for (FileType fileType : fileTypes) { if (fileContent.startsWith(fileType.getValue())) { return fileType; } } return null; } public static void main(String[] args) { String s = getFileType("E:\\QP\\7a76a296b072ebe17507bd31709e9dc4.png").name().toLowerCase(); if (s != null && s != "") { System.out.println(s); } } public static enum FileType { /** * JEPG. */ JPEG("FFD8FF"), /** * PNG. */ PNG("89504E47"), /** * GIF. */ GIF("47494638"), /** * TIFF. */ TIFF("49492A00"), /** * Windows Bitmap. */ BMP("424D"), /** * CAD. */ DWG("41433130"), /** * Adobe Photoshop. */ PSD("38425053"), /** * MS Word/Excel. */ XLS_DOC("D0CF11E0"), XLSX_DOCX("504B0304"), /** * Rich Text Format. */ RTF("7B5C727466"); private String value; private FileType(String value) { this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } }
相关文章推荐
- SpringMVC上传文件以流方式判断类型附常用类型
- 160414、java上传文件以流方式判断类型
- java上传文件以流方式判断类型
- java上传文件以流方式判断类型
- SpringMVC上传文件以流方式判断类型附常用类型
- java上传文件以流方式判断类型
- java上传文件以流方式判断类型
- 如何判断上传文件的真实类型
- 用ASP.net判断上传文件类型的三种方法
- js判断上传控件FileUpload是否选择和文件类型
- 判断文件上传时文件的类型
- ASP.net 判断上传文件类型的三种方法
- asp.net 用jquery判断fileupload上传文件的大小和类型和名字
- Http一次上传多个文件(类型可以不同)的方式
- JavaScript判断文件上传类型的方法
- js判断上传文件的类型和大小示例代码
- js判断上传文件类型判断FileUpload文件类型代码
- ASP.NET上传文件对文件类型的高级判断
- 通过以二进制方式读取文件 判断文件头得到图片类型 ,上面通过拓展名有缺陷。
- php判断上传的文件是否是图片类型