错误在IE10中显示图像

时间:2015-07-10 11:15:02

标签: java internet-explorer-10

服务器:

@RequestMapping(value = "/url/{size}/{id}", method = RequestMethod.GET)
public void getPortfolioFile(HttpServletResponse response,
    @PathVariable("id") int id,
    @PathVariable("size") int size)
{
    File img = provider.getImage(id, size);

    if (img != null) {
        try {
            FileCopyUtils.copy(FileCopyUtils.copyToByteArray(img), response.getOutputStream());
            String mimeType = img.toURL().openConnection().getContentType();
            response.setContentType(mimeType);
            response.setContentLength((int) img.length());
            response.setHeader("Content-Transfer-Encoding", "binary");
            response.setHeader("Content-Type", "binary/octet-stream");
            response.setHeader("Content-Disposition", "attachment; filename=\"" + img.getName() + "\"");
        } catch (IOException e) {
            e.printStackTrace(System.err);
        }
    }
}

html:

<img src="/url/2/${id}" onerror="$('#c').empty();" />

问题是IE10不显示图像。响应体包含图像,标题是200 OK。可以吗?

登记入住:

  • Chrome v43.0.2357.132
  • FireFox Developer Edition v40
  • IE v10

1 个答案:

答案 0 :(得分:0)

您需要在编写内容之前设置标题,否则忽略它们。

String mimeType = img.toURL().openConnection().getContentType();
response.setContentType(mimeType);
response.setContentLength((int) img.length());
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Type", "binary/octet-stream");
response.setHeader("Content-Disposition", "attachment;         
FileCopyUtils.copy(FileCopyUtils.copyToByteArray(img), response.getOutputStream());

编辑: 你对内容类型“binary / octet-stream”没有意义。 在这里,我期待“image / gif”或其他适当的内容类型。 我也会删除内容处置标题。