生成验证码时,验证码图片不显示,错误信息如下,javax.imageio.IIOException: Can‘t create output stream! javax.imageio.IIOExce
登录验证时,验证码不显示,解决办法如下:
今天写了一个简单的demo,测试使用验证码登录验证,遇到了一个问题,验证码不显示,浏览器显示页面如下(简单测试,页面就随便写了一个)
浏览器显示界面如下(验证码无法显示):
报错信息如下:
错误日志1:
错误日志2:
错误日志3:
错误总结下来大概就是下面三个:
- Can't create output stream!(没有办法创建输出流)
- Can't create cache file!(没有办法创建缓冲文件)
- D:\Program Files\Apache\apache-tomcat-8.5.27\temp\imageio5481273428871630221.tmp(没有办法在D:\Program Files\Apache\apache-tomcat-8.5.27\temp文件夹下面生成imageio5481273428871630221.tmp)
一般碰到 Can't create output stream!的问题,看看下面两种情况:
(1)查看我们的tomcat下面没有temp文件夹,因为ImageIO默认使用的缓存目录是tomcat文件夹下面的temp文件夹。
(2)如果有这个文件夹还是无法生成缓存文件,那么大概率可能是没有没有管理员权限造成的无法缓存,D盘需要管理员权限才能创建文件夹。
对应的解决方案:
(1)手动在tomcat文件夹下创建一个temp文件夹,然后重启Tomcat服务器(默认缓存就存放在temp文件夹下下,没有固然会报错)
(2) 在生成验证码的代码中加入如下代码:ImageIO.setUseCache(false);//不使用文件目录缓存,使用内存缓存
注意:ImageIO默认就是使用的缓存目录,所以这里需要使用上面代码来更改缓存策略
我的代码如图:
更改后的结果如下:
希望对你有帮助,加油骚年!