Java判断上传图片格式的实例代码

先给大家介绍下java判断上传图片格式。

由于客户上传图片将png的图片的后缀名改为jpg,所以通过后缀名判断不行,用下面这个方法可以

   //判断是否是JPG格式
   log.info("-1----进入JPG格式判断.....");
   ImageInputStream iis = ImageIO.createImageInputStream(file.getInputStream());
   Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
   if (!iter.hasNext()) {
     throw new RuntimeException("No readers found!");
   }
   ImageReader reader = iter.next();

   log.info("Format1: " + reader.getFormatName()); //这里会打印出图片的格式
   if(!"JPEG".equals(reader.getFormatName())){
     return new ResponseBean(ResponseBean.FAIL, "不支持修改后缀名为jpg的图片");
   }
   iis.close();

PS:Java使用文件头的类型判断上传的文件是否为图片类型

web判断文件的格式的时候,我们一般都是通过扩展名来判断,这个有点不太靠谱和安全,例如,修改文件名的后缀即可绕过判断。一般要判断是利用头文件来判断。下面是利用头文件来判断的代码:

package com.metro.crm.util;
import java.io.FileInputStream;
public class FileType{
  public static String bytesToHexString(byte[] src) {
    StringBuilder stringBuilder = new StringBuilder();
    if (src == null || src.length <= 0) {
      return null;
    }
    for (int i = 0; i < src.length; i++) {
      int v = src[i] & 0xFF;
      String hv = Integer.toHexString(v);
      if (hv.length() < 2) {
        stringBuilder.append(0);
      }
      stringBuilder.append(hv);
    }
    return stringBuilder.toString();
  }
  /**
   * @param args
   */
  public static void main(String[] args) throws Exception {
    FileInputStream is = new FileInputStream("F:\\aaa.jpg");
    byte[] b = new byte[3];
    is.read(b, 0, b.length);
    String photo = bytesToHexString(b);
    photo = photo.toUpperCase();
    System.out.println("头文件是:" + photo);
    String ooo = TypeDict.checkType(photo);
    System.out.println("后缀名是:" + ooo);
  }
}

package com.metro.crm.util;
public class TypeDict {
  /**
   常用文件的文件头如下:(以前六位为准)
   JPEG (jpg),文件头:FFD8FF
   PNG (png),文件头:89504E47
   GIF (gif),文件头:47494638
   TIFF (tif),文件头:49492A00
   Windows Bitmap (bmp),文件头:424D
   CAD (dwg),文件头:41433130
   Adobe Photoshop (psd),文件头:38425053
   Rich Text Format (rtf),文件头:7B5C727466
   XML (xml),文件头:3C3F786D6C
   HTML (html),文件头:68746D6C3E
   Email [thorough only] (eml),文件头:44656C69766572792D646174653A
   Outlook Express (dbx),文件头:CFAD12FEC5FD746F
   Outlook (pst),文件头:2142444E
   MS Word/Excel (xls.or.doc),文件头:D0CF11E0
   MS Access (mdb),文件头:5374616E64617264204A
   WordPerfect (wpd),文件头:FF575043
   Postscript (eps.or.ps),文件头:252150532D41646F6265
   Adobe Acrobat (pdf),文件头:255044462D312E
   Quicken (qdf),文件头:AC9EBD8F
   Windows Password (pwl),文件头:E3828596
   ZIP Archive (zip),文件头:504B0304
   RAR Archive (rar),文件头:52617221
   Wave (wav),文件头:57415645
   AVI (avi),文件头:41564920
   Real Audio (ram),文件头:2E7261FD
   Real Media (rm),文件头:2E524D46
   MPEG (mpg),文件头:000001BA
   MPEG (mpg),文件头:000001B3
   Quicktime (mov),文件头:6D6F6F76
   Windows Media (asf),文件头:3026B2758E66CF11
   MIDI (mid),文件头:4D546864
   */
  public static String checkType(String fileType) {
    switch (fileType) {
      case "FFD8FF": return "jpg";
      case "89504E": return "png";
      case "474946": return "jif";
      default: return "0000";
    }
  }
}

总结

以上所述是小编给大家介绍的Java判断上传图片格式的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Java实现的图片上传工具类完整实例

    本文实例讲述了Java实现的图片上传工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.*; /** * 图片上传工具类 * Created by charlin on 2017/9/10. */ public class UploadImageUtil { private String f

  • 简单实现java上传图片文件功能

    总的说图片上传有两种方式,一种是把图片文件写到数据库中,另一种是存到服务器文件目录中.写到数据库中的图片文件需要转换成二进制流的格式,占用数据库空间比较,适合少量图片的存储,比如说,系统中某些小图标,写到数据库中的优点是比较安全,不容易被用户不小心删除. 如果是大量的图片的存储通常的做法是保存到服务器的某个文件夹中.而完成上传有很多方式,可以采用流的方式,可以采用ftp的方式,这里采用fileupload方式. 随着系统规模的不同,对图片文件的处理方式也不尽相同.如果系统中图片的数量不是很大,直

  • java图片格式转换的三段代码

    网上关于java图片格式内容的文章不是很多,也不是很完整,小编搜集了三段java图片格式转换代码,分享给大家: 第一段:java图片格式转换代码 import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Scanner; import javax.imageio.*; public class FormatConversion { public st

  • Java实现的简单图片上传功能示例

    本文实例讲述了Java实现的简单图片上传功能.分享给大家供大家参考,具体如下: import java.io.*; import java.net.*; /* *发送端 */ class picsend { public static void main(String[] args) throws Exception { if(args.length!=1) { System.out.println("请选择一张.jpg图片"); return; } File file = new F

  • java实现图片上传至本地实例详解

    在工作中要求将图片上传至本地,如下代码将介绍如何将图片上传至本地 准备工作: 环境:eclipse4.5-x64,jdk1.7-x64,maven3 tomcat服务器配置图片上传映射: 上传至本地服务器配置文件:image.properties #\u672c\u5730\u670d\u52a1\u5668\u56fe\u7247\u4fdd\u5b58\u8def\u5f84 IMAGEPATH=/mall/upload/image/ #\u56fe\u7247\u540e\u7f00\u5

  • Java处理Webp图片格式转换的示例代码

    前言 Webp是Google推出的一种新型图片格式,相比于 传统的PNG/JPG图片有着更小体积的优势,在Web中有着广泛的应用.由于Webp格式推出比较晚, Jdk 内置的图片编解码库对此并不支持. 网上给出的Java环境解决方案往往需要手动在java.library.path中安装对应的动态链接库,windows是dll文件,linux是so文件.这对于开发部署非常不方便. 本文提供一种无需手动安装动态链接库,同时可以方便处理Webp的解决方案 WebP是谷歌的图片格式,java 类库ima

  • java实现上传网络图片到微信临时素材

    本文实例为大家分享了java实现上传网络图片到微信临时素材的具体代码,供大家参考,具体内容如下 package org.afuos.playcontrol.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; /** * Created b

  • Java实现上传文件图片到指定服务器目录

    具体代码如下所示: ***web.xml*** <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xm

  • Java实现将png格式图片转换成jpg格式图片的方法【测试可用】

    本文实例讲述了Java实现将png格式图片转换成jpg格式图片的方法.分享给大家供大家参考,具体如下: import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ConvertImageFile { public static void main(Str

  • Java判断上传图片格式的实例代码

    先给大家介绍下java判断上传图片格式. 由于客户上传图片将png的图片的后缀名改为jpg,所以通过后缀名判断不行,用下面这个方法可以 //判断是否是JPG格式 log.info("-1----进入JPG格式判断....."); ImageInputStream iis = ImageIO.createImageInputStream(file.getInputStream()); Iterator<ImageReader> iter = ImageIO.getImageR

  • jQuery判断邮箱格式对错实例代码讲解

    废话不多说了,具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>检测Email地址格式是否正确</title> <script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"><

  • Java 判断字符为中文实例代码(超管用)

    在做项目中经常会遇到有项目需求是需要判断字符为中文的一些问题,所以搜集了判断中文字符的代码片段,特此分享供大家参考. 直接贴出代码了,里面有详细的注释. package com.coder4j.main; import java.util.regex.Pattern; /** * Java 判断中文字符 * * @author Chinaxiang * @date 2015-08-11 * */ public class CheckChinese { public static void mai

  • php判断文件上传图片格式的实例详解

    php判断文件上传图片格式的实例详解 判断文件图片类型, $type = $_FILES['image']['tmp_name'];//文件名 //$type = $this->getImagetype( $type ); $filetype = ['jpg', 'jpeg', 'gif', 'bmp', 'png']; if (! in_array($type, $filetype)) { return "不是图片类型"; } 如上如果用户修改文件后缀为png jpeg等无法满

  • Java判断字符串回文的代码实例

    首先,回文是指类似于"12345","abcdcba"的形式,即正念和反念都是一样的字符串 判断字符串是否是回文,这边介绍2种办法 1.将字符串翻转,判断翻转后的字符串和原字符串是否相等 public static void main(String[] args) { String s="abcdcba"; // 用StringBuilder的reverse方法将字符串反转 StringBuilder sb=new StringBuilder(s

  • java中的 toString()方法实例代码

    前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据. 最近项目中需要对一个ArrayList<ArrayList<Integer>> datas  形式的集合处理. 处理要求把集合数据转换成字符串形式,格式为 :子集合1数据+"#"+子集合2数据+"#"+....+子集合n数据. 举例: 集合数据 :[[1,2,3],[2,3,5]]  要求转成为 "[1,2,3]#[2,3,5]"

  • Java实现FTP服务器功能实例代码

    FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download).FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户登录后可以进行文件搜索和文件传送等有关操作,如改变当前工作目录.列文件目录.设置传输参数及传送文件等.使用FTP可以传送所有类型的文件,如文本文件.二进制可执

  • java 实现输出随机图片实例代码

    java  实现输出随机图片实例代码 输出随机图片(CAPTCHA图像):Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的测试) 相关主要类(JDK 查看API) BufferedImage:内存图像 Graphics:画笔 ImageIO:输出图像 放在html页面上<img src/> 注意:浏览器默认会缓存图片 public static int WIDTH =

  • java 根据坐标截取图片实例代码

    java 根据坐标截取图片 实例代码:代码中有不是注释,很好看懂! package com.json.test; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; import javax.imageio.

  • java随机验证码生成实现实例代码

    java随机验证码生成实现实例代码 摘要: 在项目中有很多情况下都需要使用到随机验证码,这里提供一个java的随机验证码生成方案,可以指定难度,生成的验证码可以很方便的和其他组件搭配 之前要使用一个生成随机验证码的功能,在网上找了一下,有很多的人提出了不同的解决方案,但是很多人都使用了com.sun.image.这个包或者子包里面的类,而这个包结构下面的类都是不推荐使用的,我们应该依赖于java.或者javax.这些包结构下面的类,否则将来的可移植性就很不好(比如换成IBM的JDK就不行了),但

随机推荐