0

我有一个 java web 应用程序,它在某些时候会渲染带有很多图片的页面。这些图片是作为 html img 标签插入到 jsp 中的。用户可以在浏览器中看到这些。

图片的数量正在增长,我正在考虑将它们移动到 gridfs 中。

我的问题:有什么方法可以选择文件并在网页中将其呈现给客户端,而无需将其写入硬盘驱动器?

我不得不提一下,对于包含 img 链接的各种页面,有很多并发的 http 请求。

4

1 回答 1

0

找到了答案。我可以在浏览器中看到图像,因此使用 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;
}
于 2012-10-26T21:58:04.440 回答