在本教程中,我们展示了如何在 Spring Boot RESTful Web 应用中提供图像文件。 该图像是位于资源目录中的 JPEG 文件。
Spring 是用于开发 Java 企业应用的 Java 应用框架。 它还有助于集成各种企业组件。 Spring Boot 使创建具有 Spring 动力的生产级应用和服务变得很容易,而对安装的要求却最低。
我们将展示将图像数据发送到客户端的三种方式。
Spring 图像示例
该 Web 应用在src/main/resources/image
目录中包含一个sid.jpg
文件。 ClassPathResource
用于获取图像文件。
这是项目结构。
pom.xml
这是 Maven 构建文件。 Spring Boot 启动器是一组有用的依赖项描述符,可大大简化 Maven 配置。 spring-boot-starter-parent
具有 Spring Boot 应用的一些常用配置。 spring-boot-starter-web
是使用 Spring MVC 构建 Web 应用的入门工具。 它使用 Tomcat 作为默认的嵌入式服务器。 spring-boot-maven-plugin
在 Maven 中提供了 Spring Boot 支持,使我们可以打包可执行的 JAR 或 WAR 档案。 它的spring-boot:run
目标执行 Spring Boot 应用。
com/zetcode/Application.java
Application
设置 Spring Boot 应用。 @SpringBootApplication
启用组件扫描和自动配置。
使用HttpServletResponse
提供图像
在第一种情况下,我们直接写入HttpServletResponse
。
com/zetcode/controller/MyController.java
在此控制器中,我们获取图像资源并将其直接写入响应对象。
我们从类路径与ClassPathResource
图片资源中(src /主/资源目录是在 Java 类路径)。
响应的内容类型设置为MediaType.IMAGE_JPEG_VALUE
。
使用StreamUtils
,我们将数据从图像复制到响应对象。
用ResponseEntity
提供图像
在第二种情况下,我们使用ResponseEntity
。
com/zetcode/controller/MyController.java
getImage()
方法的返回类型设置为ResponseEntity<byte[]>
。
使用StreamUtils.copyToByteArray()
,我们将图像数据复制到字节数组中。
字节数组提供给ResponseEntity
的主体。
使用ResponseEntity
和InputStreamResource
提供图像
在第三种情况下,我们使用ResponseEntity
和InputStreamResource
。 InputStreamResource
是 Spring 对低级资源的抽象。
com/zetcode/controller/MyController.java
getImage()
方法的返回类型设置为ResponseEntity<InputStreamResource>
。
ResponseEntity
的主体返回InputStreamResource
。
我们启动 Spring Boot 应用。
我们导航到http://localhost:8080/sid
在浏览器中显示图像。
在本教程中,我们展示了如何从 Spring Boot 应用向客户端发送图像数据。 我们使用了三种不同的方法。