controller處理圖片返回格式
if (null == map.get("fileType")) {
return;
}
String temp = map.get("base64File");
boolean flag = map.get("fileType").equalsIgnoreCase("PDF");
// PDF
if (flag) {
temp.replaceAll("\r\n", "");
temp.replaceAll("\\+", "%2B");
response.setContentType("text/html; charset=UTF-8");
StringBuffer sb = new StringBuffer(
"<!DOCTYPE html>\n" + "<html style=\"width: 100%;height: 100%;\" lang=\"en\">\n" + "\n"
+ "<head>\n" + " <meta charset=\"UTF-8\">\n"
+ " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"
+ " <meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">\n"
+ " <title>Document</title>\n" + "\n" + "</head>\n" + "\n"
+ "<body style=\"width: 100%;height: 100%;\">\n" + " <iframe\n" + " src=\"");
sb.append("data:application/pdf;base64," + temp);
sb.append("\"\n" + " style=\"width: 100%;height: 100%;\"></iframe>\n" + "</body>\n" + "\n"
+ "</html>");
response.getWriter().print(sb.toString());
} else {
if (temp.startsWith("data:image/jpeg;base64,")) {
temp = temp.replaceAll("data:image/jpeg;base64,", "");
}
// 圖片
byte[] data = new BASE64Decoder().decodeBuffer(temp);
OutputStream out = response.getOutputStream();
response.setContentType("image/png");
out.write(data);
out.flush();
out.close();
}
}
後臺調外部接口獲取:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
String signature = SignUtils.signObjForBD(dto, serverConfig.getBankdlinkKeyid(), serverConfig.getBankdlinkToken());
headers.add("signature", signature);
headers.add("keyId", serverConfig.getBankdlinkKeyid());
HttpEntity<JSONObject> entity = new HttpEntity<JSONObject>(dto, headers);
log.debug("交易接口:"+interfaceName+",請求參數:"+dto.toJSONString());
ResponseEntity<ResBean> result = restTemplate.exchange(serverConfig.getBankdlinkUrl()+ interfaceName, HttpMethod.POST, entity, ResBean.class);
if(!interfaceName.equals(BankDlinkFrontInterfaceEnum.QUREY_BANKRETURN.getValue())){
log.debug("交易接口:"+interfaceName+",返回結果:"+result.getBody());
}
return result.getBody();
base64轉字節返回頁面:
byte[] buffer = new BASE64Decoder().decodeBuffer(map.get("base64File"));
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(map.get("fileName"), "UTF-8"));
out = response.getOutputStream();
out.write(buffer);
out.flush();
mysql存儲blob,取出轉字符串:
reslut = new String((byte[]) queryForList.get(0).get("REQUEST_PAYLOAD"), "utf-8")
前端接收轉頁面conrent
let json = JSON.parse(res.obj);
Modal.info({
title: "日誌詳情",
width: 600,
content: <pre>{JSON.stringify(json, null, 2)}</pre>
});