需求: 先调用别人的接口,接口返回的是图片流,再将接收到的图流写到前端
/**
* 管点查看PBS二维码图片
*/
@ApiOperation(value = "管点查看PBS二维码图片", notes = "管点查看PBS二维码图片", httpMethod = "GET")
@GetMapping("/tofly-sxgk/structure/createPicNode")
public void createPicNode(@RequestParam("pbs") String pbs, HttpServletRequest request, HttpServletResponse response) {
String token = request.getHeader("tfToken");
String path = String.format("/tofly-sxgk/structure/createPicNode?pbs=%s&access_token=%s",pbs,token);
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet(HOST + path);
CloseableHttpResponse resp;
try {
resp = httpClient.execute(httpGet);// 调用服务器接口
byte[] data = EntityUtils.toByteArray(resp.getEntity());// 将图片或者文件转化成数组的形式
OutputStream toClient = response.getOutputStream();// 获取输出流
toClient.write(data);// 将这个数组写入输出流中
toClient.close();
// 图片流转base64
// BASE64Encoder encoder = new BASE64Encoder();
// String imageBase64 ="data:image/png;base64,"+ encoder.encode(data);
// return Result.OK(imageBase64);
} catch (Exception e) {
e.printStackTrace();
}
}
private Result<Object> getImgBase64(String path) {
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet(PropertiesUtil.HOST + path);
CloseableHttpResponse resp;
try {
resp = httpClient.execute(httpGet);// 调用服务器接口
byte[] data = EntityUtils.toByteArray(resp.getEntity());// 将返回的图片或者文件转化成字节数组的形式
BASE64Encoder encoder = new BASE64Encoder();
String imageBase64 = "data:image/png;base64," + encoder.encodeBuffer(data).trim();
imageBase64 = imageBase64.replaceAll("\n", "").replaceAll("\r", "").replaceAll(" ", "");//删除 \r\n
return Result.OK(imageBase64);
} catch (Exception e) {
e.printStackTrace();
return Result.ERROR(e.getMessage());
}
}