我尝试显示src/main/webapp/WEB-INF/resources/img/
文件夹中的图片(不同于src/main/resources
)
@Controller
@RequestMapping("/items")
public class ItemsController {
@GetMapping( "/images/{itemId}")
@ResponseBody
public byte[] getItemImageById(@PathVariable long itemId) throws IOException {
BufferedImage originalImage =
ImageIO.read(
new File("/WEB-INF/resources/img/" + itemId + ".png"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( originalImage, "png", baos );
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();
return imageInByte;
}
}
<img src='${pageContext.request.contextPath}/items/images/1'/>
它行不通-没有图像,但是如果我用这样的File绝对路径替换构造函数中的路径,C://.../some_file.png
它就可以正常工作。
问题来源:Stack Overflow
您无法通过“文件”来读取图像,而需要通过ServletContext。
@RequestMapping("/items")
public class ItemsController {
@Autowired
ServletContext context;
@GetMapping( "/images/{itemId}")
@ResponseBody
public byte[] getItemImageById(@PathVariable long itemId) throws IOException {
BufferedImage originalImage =
ImageIO.read(context.getResourceAsStream("/WEB-INF/resources/img/" + itemId + ".png"));
// your original code
}
}
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。