java返回PDF和img格式圖片返回頁面代碼

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>
    });
發佈了29 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章