尝试将二进制文件返回到浏览器时出现406错误

时间:2015-04-16 19:13:26

标签: java spring

我使用spring mvc并想创建一个必须返回二进制文件的方法。我找到了一些教程,但对我来说没什么用。这是我的代码的一部分:

@RequestMapping(value = "/get-frame/{fileId}", method = RequestMethod.GET)
public void getVideoFrame(@PathVariable("fileId") String filename,
                          HttpServletResponse response) throws IOException {
    ...
    ...
    ...
    byte[] image = ...
    OutputStream outputStream = response.getOutputStream();
    outputStream.write(image);
    outputStream.close();
    response.flushBuffer();
}

此方法始终返回错误406.问题是什么?

由于

1 个答案:

答案 0 :(得分:1)

您应该设置标题,内容类型和响应的长度。

try (OutputStream out = response.getOutputStream()) {
    byte[] image = ...
    response.setContentLength(image.length);
    response.setContentType("image/png"); //or something more generic...
    response.setHeader("Accept-Ranges", "bytes");
    response.setStatus(HttpServletResponse.SC_OK);

    out.write(image);
}