img的src加载流数据图片, IE浏览器不兼容问题. ie无法加载验证码.

1. 引入pom.xml依赖

<dependency>
    <groupId>net.sf.jmimemagic</groupId>
    <artifactId>jmimemagic</artifactId>
    <version>0.1.4</version>
</dependency>

2. 修改后端接口

		BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
		ImageIO.write(bufferedImage, "PNG", byteArrayOutputStream);

		try {
            //无论何种形式,最终转为byte[]
			byte[] data = byteArrayOutputStream.toByteArray();
			MagicMatch match = Magic.getMagicMatch(data);
			String mimeType = match.getMimeType();
			HttpServletResponse response = request.getResponse();

			// 设置响应的类型格式为图片格式
			response.setContentType(mimeType);
			// 禁止图像缓存。
			response.setHeader("Pragma", "no-cache");
			response.setHeader("Cache-Control", "no-cache");
			response.setDateHeader("Expires", 0);
			BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
			bos.write(data);
			byteArrayOutputStream.close();
			bos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

友情提示:   jmimemagic包 做项目打成jar包时,  不能放在中文路径下, 会报错!!!

net.sf.jmimemagic.MagicParseException: parse error occurred - Opaque part contains invalid character: ²â
        at net.sf.jmimemagic.MagicParser.initialize(MagicParser.java:187)
        at net.sf.jmimemagic.Magic.initialize(Magic.java:92)
        at net.sf.jmimemagic.Magic.getMagicMatch(Magic.java:193)
        at net.sf.jmimemagic.Magic.getMagicMatch(Magic.java:172)
        at com.topsoft.service.validate.processor.ImageCodeProcessor.send(ImageCodeProcessor.java:56)
        at com.topsoft.service.validate.processor.BaseDefaultValidateCodeProcessor.generate(BaseDefaultValidateCodeProcessor.java:29)
        at com.topsoft.web.ValidateCodeController.imageCode(ValidateCodeController.java:39)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)

参考:

https://blog.csdn.net/zsl471260400/article/details/52882877#commentBox

猜你喜欢

转载自blog.csdn.net/kaige8312/article/details/85266413