我喜欢从web/images
目录访问图片。我想在spring controller
中访问此图片,因此我可以将此图片转换为byte[]
。我正在创建一个图表,这个图像是图表显示的一部分。所以,我使用这个byte[]
来构建Graphic2d object
。我最接近的是使用它:
FileSystemResource resource = new FileSystemResource("images/"+imageName);
目前,我已将此图像存储在包结构中。我喜欢做得比这更好。我喜欢直接从web/images
目录中阅读。请给我一些建议,谢谢。
答案 0 :(得分:1)
更优雅的方法是让您的控制器实现ServletContextAware
,以便您的控制器可以注入ServletContext
实例,然后您应该使用:
InputStream stream = servletContext.getResourceAsStream("/images/image.jpg");
int bytesRead;
byte[] buffer = new byte[8192];
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
//process image data, i.e. write to sompe place,etc.
}
//close the stream
stream.close();
BTW,对于servletContext.getRealPath,不同的servlet容器可能有不同的实现,并且在将项目打包到war文件后它可能不起作用。所以,建议使用getResourceAsStream。
答案 1 :(得分:0)
您可以使用servlet context
获取web/images
的路径。使用以下代码:
File file=new File(request.getSession().getServletContext().getRealPath("images/file.jpg"));
注意:我在这里使用request
,即HttpServletRequest
。