当outputBuffer bytesWritten<时,响应无法返回图像。 8KB

时间:2016-03-30 16:02:31

标签: java rest spring-boot httpresponse outputstream

在SpringBoot应用程序中,我试图通过Response对象的outputBuffer返回图像,通过:

try {
    response.setContentType("image/png");
    InputStream in = new FileInputStream(pathToFile);
    IOUtils.copy(in, response.getOutputStream());

}
catch (Exception e){
    ...
}

这很好,除非图像小于8kb ,在这种情况下它只返回任何内容。

有人能告诉我为什么小于8kb会导致Response实际返回零数据(而且 - 至关重要的是 - 如何解决这个问题)?

1 个答案:

答案 0 :(得分:0)

我通过在标题中明确设置内容长度来解决它:

File actualFile = new File(pathToFile);
if (actualFile.exists()){
    try {
        response.setContentType("image/png");
        response.setHeader("Content-Length", String.valueOf(actualFile.length()));
        InputStream in = new FileInputStream(pathToFile);
        IOUtils.copy(in, response.getOutputStream());
    }
    catch (Exception e){
        ...
    }
}

我想如果它低于8kb,我不想知道内容的大小。