我的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;
}
我已完成调试,我知道正在输入方法,并且我知道路径是正确的,但所有显示的是加载图片时出现问题时浏览器中的图标。
我还缺少什么?
答案 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)
这应该可以解决问题。
编辑:没有注意到这些评论,你已经自己解决了这个问题。