这里就不贴源码了,我们使用Image类创建图片验证码,启动服务,本地测试正常显示,请求服务器上的 不能正常显示。。
主要原因:
主要原因是因为ImageIO
需要默认需要有一个文件夹作为缓冲(默认是写入到tomcat/temp
文件夹下),而tomcat
默认是不会创建temp
文件夹的,所以需要我们手动创建temp
文件夹。
解决办法:
第一种:
在tomcat下新建temp目录;
第二种:
通过ImageIO.setCacheDirectory(cacheDirectory);
设置任意的、存在的缓存目录。
第三种:
ImageIO默认是使用缓存目录,可以通过ImageIO.setUseCache(false)来设置,更改缓存策略,不使用文件目录缓存,使用内存缓存
第四种:
不使用ImageIO,换成其它JDK方法
ImageIO.write(bi, "jpg", baos);
换成:
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
encoder.encode(image);
相信上面的方法会对你有帮助!下面是看到的两个链接
验证码生成、存放的两种方式:
https://blog.csdn.net/buyaoshuohua1/article/details/73612064/
有关 生成图片验证码 链接 :
https://blog.csdn.net/u011637069/article/details/51112187