Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在spring应用程序中访问图像文件夹_Java_Spring - Fatal编程技术网

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

Java 如何在spring应用程序中访问图像文件夹,java,spring,Java,Spring,我喜欢从web/images目录访问图像。我喜欢在spring控制器中访问此图像,因此我可以将此图像转换为字节[]。我正在创建图表,此图像是图表显示的一部分。因此,我使用这个字节[]来构造图形2D对象。我最接近它的是使用这个: FileSystemResource resource = new FileSystemResource("images/"+imageName); 目前,我已将此图像存储在包结构中。我喜欢做得比这更好。我喜欢直接从web/images目录中阅读。请给我一些建议,谢谢。

我喜欢从
web/images
目录访问图像。我喜欢在
spring控制器中访问此图像
,因此我可以将此图像转换为
字节[]
。我正在创建图表,此图像是图表显示的一部分。因此,我使用这个
字节[]
来构造
图形2D对象
。我最接近它的是使用这个:

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

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

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

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

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

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

getRealPath
不可移植正在生成图像吗?如果没有,你可以使用。即使生成了图像,也可以使用它,但您必须知道它的名称。