我有一个 java web 应用程序,它在某些时候会渲染带有很多图片的页面。这些图片是作为 html img 标签插入到 jsp 中的。用户可以在浏览器中看到这些。
图片的数量正在增长,我正在考虑将它们移动到 gridfs 中。
我的问题:有什么方法可以选择文件并在网页中将其呈现给客户端,而无需将其写入硬盘驱动器?
我不得不提一下,对于包含 img 链接的各种页面,有很多并发的 http 请求。
找到了答案。我可以在浏览器中看到图像,因此使用 a 作为超链接
@RequestMapping (value = "/test", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
@ResponseBody
public byte[] test(HttpServletRequest request) {
//curl -v http://localhost:8080/Bikeshop/admin/test > /dev/null
String realPath = request.getSession().getServletContext().getRealPath("/resources/images/catalog/sample.jpg");
try {
InputStream is = new FileInputStream(realPath);
BufferedImage img = ImageIO.read(is);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", bos);
return bos.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
return null;
}