我尝试显示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