Java判断文件是否为图片

来源:互联网 发布:easybcd引导ubuntu 编辑:程序博客网 时间:2024/06/05 06:10

前言

Java检查文件类型有几种方法:
1.判断文件后缀名

String extension = "";int i = fileName.lastIndexOf('.');if (i > 0) {    extension = fileName.substring(i+1);}//...if(extension=="jpg"){//your code}

但是这种方法不太靠谱
2.判断文件头
在后缀未知,或者后缀被修改的文件,依然通过文件头来判断该文件究竟是什么文件类型。我们可以使用一个文本编辑工具如UltraEdit打开文件(16进制模式下),然后看文件头是什么字符,以下是常见图片类型的文件头字符(16进制)

JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D

在这里我主要使用第三种方法
3.通过MimetypesFileTypeMap来判断

3.1 在某个目录定义一个图片判断类

package com.yourcompany.common.singleton;public class ImageCheck {    private  MimetypesFileTypeMap mtftp;    public ImageCheck(){        mtftp = new MimetypesFileTypeMap();        /* 不添加下面的类型会造成误判 详见:http://stackoverflow.com/questions/4855627/java-mimetypesfiletypemap-always-returning-application-octet-stream-on-android-e*/        mtftp.addMimeTypes("image png tif jpg jpeg bmp");    }    public  boolean isImage(File file){        String mimetype= mtftp.getContentType(file);        String type = mimetype.split("/")[0];        return type.equals("image");    }}

3.2在applicationContext.xml添加bean

<bean id="imageCheck" class="com.yourcompany.common.singleton.ImageCheck"/>

3.3在Controller中引入

@Resource(name = "imageCheck")private ImageCheck imageCheck;

3.4使用

//storeFile是File类的if(!imageCheck.isImage(storeFile)){    storeFile.delete();    return Message.failure("只能上传图片");}
0 0
原创粉丝点击