springMVC 返回流图片显示,前端接受流
- 2019 年 11 月 7 日
- 筆記
后端代码:
@RequestMapping(value = "read") public void index(Model model, HttpServletRequest req, HttpServletResponse resp, String attachmentId) { byte [] bytes = null; ServletOutputStream sos =null;// 将图像输出到Servlet输出流中。 try { GetImageRes getImageRes = acctManager.getImageBytes(attachmentId); bytes = getImageRes.getFilebyte(); ByteArrayInputStream in = new ByteArrayInputStream(bytes); //将b作为输入流; BufferedImage image = ImageIO.read(in); resp.setHeader("Pragma", "no-cache"); resp.setHeader("Cache-Control", "no-cache"); resp.setDateHeader("Expires", 0); sos = resp.getOutputStream();// 将图像输出到Servlet输出流中。 ImageIO.write(image, "jpeg", sos); } catch (IOException e) { e.printStackTrace(); } finally { try { sos.close(); } catch (IOException e) { e.printStackTrace(); } } }
直接访问springmvc路径 直接访问通过流的形式返回图片,但是这个有一个缺陷就是 返回的title是路径名称加像素。
为了解决这种问题 从前端改接受流的方式完成。
前端代码:
<html> <head> <meta name="viewport" content="width=device-width, minimum-scale=0.1"> <title>图片</title> </head> <body style="margin: 0px;"> <img id="tempImage" style="-webkit-user-select: none;cursor: zoom-in;" src="$!imgUrl" width="100%" height="100%"> </body> </html>
后端代码:
@RequestMapping(value = "readHtml") public String readHtml(Model model, HttpServletRequest req, HttpServletResponse resp, String attachmentId,String recommendId) { model.addAttribute("imgUrl", "这里直接写上访问流路径"); return "tempImage/tempImage"; }
这里就完成了 。