判断类型的代码
try {
String report = "www.baidu.com";
URL url = new URL(report);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int n;
while (-1 != (n = bis.read(buffer))) {
output.write(buffer, 0, n);
}
String type = FileTypeUtil.getFileTypeByStream(output.toByteArray());
if (!Constant.PDF_FILE.equals(type)) {
throw new CreditException("请上传文件格式为pdf的文件!");
}
//applyDO.setReport(report);
} catch (IOException e) {
throw new CreditException("上传文件失败!");
}
FileTypeUtil工具类如下:
public static final String getFileTypeByStream(byte[] b) {
String filetypeHex = String.valueOf(getFileHexString(b));
Iterator entryiterator = FILE_TYPE_MAP.entrySet().iterator();
Entry entry;
String fileTypeHexValue;
do {
if (!entryiterator.hasNext()) {
return null;
}
entry = (Entry)entryiterator.next();
fileTypeHexValue = (String)entry.getValue();
} while(!filetypeHex.toUpperCase().startsWith(fileTypeHexValue));
return (String)entry.getKey();
}
public static final String getFileHexString(byte[] b) {
StringBuilder stringBuilder = new StringBuilder();
if (b != null && b.length > 0) {
for(int i = 0; i < b.length; ++i) {
int v = b[i] & 255;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
} else {
return null;
}
}
工具类的初始化信息如下
// FILE_TYPE_MAP的key对应文件类型,value对应文件流起始的字节
public static final Map<String, String> FILE_TYPE_MAP = new HashMap();
private FileTypeUtil() {
}
private static void getAllFileType() {
FILE_TYPE_MAP.put("jpg", "FFD8FF");
FILE_TYPE_MAP.put("png", "89504E47");
FILE_TYPE_MAP.put("gif", "47494638");
FILE_TYPE_MAP.put("tif", "49492A00");
FILE_TYPE_MAP.put("bmp", "424D");
FILE_TYPE_MAP.put("dwg", "41433130");
FILE_TYPE_MAP.put("html", "68746D6C3E");
FILE_TYPE_MAP.put("rtf", "7B5C727466");
FILE_TYPE_MAP.put("xml", "3C3F786D6C");
FILE_TYPE_MAP.put("zip", "504B0304");
FILE_TYPE_MAP.put("rar", "52617221");
FILE_TYPE_MAP.put("psd", "38425053");
FILE_TYPE_MAP.put("eml", "44656C69766572792D646174653A");
FILE_TYPE_MAP.put("dbx", "CFAD12FEC5FD746F");
FILE_TYPE_MAP.put("pst", "2142444E");
FILE_TYPE_MAP.put("xls", "D0CF11E0");
FILE_TYPE_MAP.put("doc", "D0CF11E0");
FILE_TYPE_MAP.put("xlsx", "504B0304");
FILE_TYPE_MAP.put("docx", "504B0304");
FILE_TYPE_MAP.put("mdb", "5374616E64617264204A");
FILE_TYPE_MAP.put("wpd", "FF575043");
FILE_TYPE_MAP.put("eps", "252150532D41646F6265");
FILE_TYPE_MAP.put("ps", "252150532D41646F6265");
FILE_TYPE_MAP.put("pdf", "255044462D312E");
FILE_TYPE_MAP.put("qdf", "AC9EBD8F");
FILE_TYPE_MAP.put("pwl", "E3828596");
FILE_TYPE_MAP.put("wav", "57415645");
FILE_TYPE_MAP.put("avi", "41564920");
FILE_TYPE_MAP.put("ram", "2E7261FD");
FILE_TYPE_MAP.put("rm", "2E524D46");
FILE_TYPE_MAP.put("mpg", "000001BA");
FILE_TYPE_MAP.put("mov", "6D6F6F76");
FILE_TYPE_MAP.put("asf", "3026B2758E66CF11");
FILE_TYPE_MAP.put("mid", "4D546864");
}
static {
getAllFileType();
}