无法在Word和其他应用程序中复制和粘贴Spring MVC Image Response

时间:2015-10-15 13:28:22

标签: java spring image spring-mvc copy-paste

我将图像保存为数据库中的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等应用程序中复制和粘贴也不起作用。我无能为力,无论错误在哪里。

保存图像并将其插入应用程序有效,但遗憾的是不能选择。

有谁知道我还能尝试什么或可能出现什么问题?

提前致谢!

1 个答案:

答案 0 :(得分:0)

好的,我解决了。这种情况下的问题实际上是服务器强制的SSL连接。我为URL-Path设置了一个SecurityConstraint,用于排除使用SSL的图像,现在它可以正常工作。

编辑:我仍然感到困惑,为什么复制和粘贴在Paint.NET中工作但在Word中没有...