如何在spring应用程序中访问图像文件夹

时间:2014-08-27 05:33:52

标签: java spring

我喜欢从web/images目录访问图片。我想在spring controller中访问此图片,因此我可以将此图片转换为byte[]。我正在创建一个图表,这个图像是图表显示的一部分。所以,我使用这个byte[]来构建Graphic2d object。我最接近的是使用它:

FileSystemResource resource = new FileSystemResource("images/"+imageName);

目前,我已将此图像存储在包结构中。我喜欢做得比这更好。我喜欢直接从web/images目录中阅读。请给我一些建议,谢谢。

2 个答案:

答案 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