开发者社区> 问答> 正文

无法从控制器中访问图片资源在jsp中访问?

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

展开
收起
montos 2020-03-21 21:51:05 1103 0
1 条回答
写回答
取消 提交回答
  • 您无法通过“文件”来读取图像,而需要通过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

    2020-03-21 21:51:51
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载