有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在IE10中显示图像时发生java错误

服务器:

@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开发者版v40
  • IE v10

共 (1) 个答案

  1. # 1 楼答案

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

    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());
    

    编辑: 您的内容类型“二进制/八位字节流”没有意义。 在这里,我希望使用“image/gif”或其他合适的内容类型。 我还将删除内容处置标题