试图从Spring获取图像

时间:2016-01-11 01:10:33

标签: java spring-mvc spring-boot

我的HTML文件包含以下命令

<img src="/5/background" alt="" width="192" height="192">

我在Spring Boot应用程序的@RestController中绑定了以下内容:

@RequestMapping(value = "/{connector}/background", method = RequestMethod.GET)
public File getConnectorBackgroundImage(@PathVariable("connector") int connector)
{
    File image = new File("folder" + connector + "/myPicture");
    return image;
}

我已完成调试,我知道正在输入方法,并且我知道路径是正确的,但所有显示的是加载图片时出现问题时浏览器中的图标。

我还缺少什么?

1 个答案:

答案 0 :(得分:1)

Spring不知道如何以这种方式处理文件。如果您返回File,如果您调用REST API,控制器将只显示该文件的路径。

正确的方法是将文件读作byte[]。使用commons-io你可以想出这样的东西:

File image = new File("folder" + connector + "/myPicture");
FileInputStream input = null;
try {
    input = new FileInputStream(image);
    return IOUtils.toByteArray(input);
} finally {
    IOUtils.closeQuietly(input);
}

你不应该忘记的另一件事是提供mimetype。为此,您可以通过提供@RequestMapping属性稍微调整produces注释:

@RequestMapping(value = "/{connector}/background", method = RequestMethod.GET, produces = MediaType.IMAGE_PNG_VALUE)

这应该可以解决问题。

编辑:没有注意到这些评论,你已经自己解决了这个问题。