问题引出:
在某些情况下Rest API约定不允许通过流形式直接GET提供到客户端直接展示图片。如果是这样,那么就只能把后端生成的图片转成ByteArray返回给前台,让前台重新把它变成图片!这里提供两种解析方法
第一种方法: data中包含了一个PNG图片验证码的ByteArray。这个信息可以放在Base64转图片的在线工具上。转换
{
“code”: “200”,
“msg”: “操作成功”,
“data”: “iVBORw0KGgoAAAANSUhEUgAAAFAAAAAaCAIAAACvsEzwAAABxElEQVR42tWYS2rDMBCGtekJmgMU2l3PkCsUuuklCu0i9ycVqIhhHr/+kaWEGGFsvTyf5iW5XGevy+/P9aGuJnA5wvlYzJPAN2PeMXOds2Q//P55kkV2qA+tPD1/RCUl3HJmClh+u94tsBUOACvml6+3XtRHVdP59dstWeaSWh7M2Z8xsGQmgevMEbDFxnaR8+FGq2a0zJEBY2DJrOrvDKz0rFQtfXgHsJzQZd4IHDHP+TAAlmxKpI3AHbLNaJmtSbu0UiCJFD2QwGSyLNPx3QYwa9JDZhI4Mmm1EFKGvcA9aUW+quqPACsYBdzLYmBl4WppmaDVei40absFWubD9jWK0jhu1Z4qXIFXMkpLW3OZS2oruzZKzwHjPAxQ/4GB9t24J2ntQCZKu2kJv2Y3HmMfjtxdOSezoQeh0ta4Gdi2AuBIgIQPS3KrZOYEEzGnxg6PUMOe1GkpUotcgmlm8riHTYNkZoFdtShrzx5TswMjWVOLeAgYrHGKmR81xOANR7UWppOr4bsz85WylcrDS5QMRmX1BrLJcGZ247FEyViyKC9kmd3/MGPgSKXTqLy/8bEt+sfkruD4N+3tgV2MlJsMDfMPWxwKWHrFVh0AAAAASUVORK5CYII=”
}
我们需要的包含了wl35的图片被成功解析出来
我们还可以使用网页的形式将它解析:data中包含了一个PNG图片验证码的ByteArray,我们需要在在html文件中补全代码
data:image/png;base64,
第二种方法:通过工具类转化
传入字节数组和路径,将字节数组做非空判断判断后写入到文件中
public void byte2image(byte[] data,String path){
if(data.length<3||path.equals("")) return;
try{
FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path));
imageOutput.write(data, 0, data.length);
imageOutput.close();
System.out.println("Make Picture success,Please find image in " + path);
} catch(Exception ex) {
System.out.println("Exception: " + ex);
ex.printStackTrace();
}
}
我们以工作流的流程跟踪接口为例:将生成的图片文件输出到D盘根目录下
启动流程后进行流程跟踪,可以看到base64的字节数组直接解析成了图片
提交到一级审批,再次进行流程跟踪,新生成的图片被覆盖了
二级审批生成的图片
打回操作生成的跟踪图