我将图像保存为数据库中的blob。我将这个带有Spring MVC控制器的图像发送到浏览器。该部分适用于以下代码:
@RequestMapping(value = "/img/{id}", method = RequestMethod.GET)
public void getImage(@PathVariable("id") Long id, HttpServletResponse response) {
Image image = imageRepository.findOne(id);
if (image != null) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);
return new ResponseEntity<>(image.getData(), headers, HttpStatus.CREATED);
}
return null;
}
但是当我尝试复制图像并将其粘贴到例如Word中时,只有一个空白方块。我试图将图像粘贴到Paint.NET中,然后再次运行。
我尝试了一些其他方法将图像发送到浏览器,例如:
@RequestMapping(value = "/img/{id}", method = RequestMethod.GET)
public void getImage(@PathVariable("id") Long id, HttpServletResponse response) {
Image image = imageRepository.findOne(id);
if (image != null) {
ByteArrayInputStream bis = new ByteArrayInputStream(image.getData());
response.reset();
response.setContentLength(image.getData().length);
response.setContentType("image/png");
response.setStatus(HttpServletResponse.SC_OK);
try {
OutputStream outputStream = response.getOutputStream();
IOUtils.copy(bis, outputStream);
bis.close();
outputStream.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这也适用于浏览器,但在word等应用程序中复制和粘贴也不起作用。我无能为力,无论错误在哪里。
保存图像并将其插入应用程序有效,但遗憾的是不能选择。
有谁知道我还能尝试什么或可能出现什么问题?
提前致谢!
答案 0 :(得分:0)
好的,我解决了。这种情况下的问题实际上是服务器强制的SSL连接。我为URL-Path设置了一个SecurityConstraint,用于排除使用SSL的图像,现在它可以正常工作。
编辑:我仍然感到困惑,为什么复制和粘贴在Paint.NET中工作但在Word中没有...