有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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


共 (2) 个答案

  1. # 1 楼答案

    您可以使用servlet context来获取web/images的路径。使用以下代码:

    File file=new File(request.getSession().getServletContext().getRealPath("images/file.jpg"));
    

    注意:这里我使用request,即HttpServletRequest

  2. # 2 楼答案

    更优雅的方法是让您的控制器实现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();
    

    顺便说一句,至于servletContext。getRealPath,不同的servlet容器可能有不同的实现,并且在项目打包到war文件后可能无法工作。因此,建议使用getResourceAsStream