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

标签 java spring

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

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

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

最佳答案

更优雅的方法是让你的 Controller 实现ServletContextAware,这样你的 Controller 就可以注入(inject)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。

关于java - 如何在Spring应用程序中访问图像文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25519595/

相关文章:

java - 最佳实践 : Design pattern for 2D HUD screen navigation

java - 我无法在 setOnClickListener() 中 Toast 变量值

java - Spring 3.2 - 切换到 JavaConfig 后无法解析 View 名称

java - 如何在 Sql Server 2000 上使用 Hibernate 调用存储过程?

java - WebApplicationInitializer 调用了两次

java - 我面临 java.lang.StringIndexOutOfBoundsException :

java - 具有子类 AsyncTask 的 Android 类在返回值之前等待 postExecute

java - 在生产中定期进行线程转储是否昂贵?

java - 使用 Quartz 的动态作业数据

spring - 如何使用Spring Data ElasticsearchTemplate连接到Amazon Elasticsearch Service?