在现代 Web 开发中,常常需要将图片通过接口返回给前端,以供展示或下载。Spring Boot 作为一个开源框架,极大地简化了 Java 应用的开发过程,可以轻松地实现这一功能。本文将通过一个示例,演示如何在 Spring Boot 3 中返回图片。

1. 创建 Spring Boot 项目

首先,你需要创建一个 Spring Boot 项目。可以通过 Spring Initializr(https://start.spring.io)生成项目,选择所需的依赖。对于这个示例,我们需要选择 Web 依赖。

2. 项目结构

创建好项目后,以下是项目的基本结构:

src
└── main
    ├── java
    │   └── com
    │       └── example
    │           └── demo
    │               ├── DemoApplication.java
    │               └── controller
    │                   └── ImageController.java
    └── resources
        └── static
            └── images
                └── example.jpg

resources/static/images 目录下放置一张名为 example.jpg 的图片。

3. 编写控制器

接下来,创建一个 ImageController 类,用于处理返回图片的请求。以下是 ImageController.java 的示例代码:

package com.example.demo.controller;

import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ImageController {

    private final ResourceLoader resourceLoader;

    public ImageController(ResourceLoader resourceLoader) {
        this.resourceLoader = resourceLoader;
    }

    @GetMapping("/images/{imageName}")
    public ResponseEntity<Resource> getImage(@PathVariable String imageName) {
        // 加载图片资源
        Resource resource = resourceLoader.getResource("classpath:static/images/" + imageName);

        if (!resource.exists()) {
            return ResponseEntity.notFound().build(); // 如果图片不存在返回404
        }

        return ResponseEntity.ok()
                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
                .body(resource);
    }
}

4. 启动应用

DemoApplication.java 中,启动 Spring Boot 应用:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

5. 访问图片

启动应用后,你可以通过浏览器访问以下链接来查看图片:

http://localhost:8080/images/example.jpg

如果一切正常,你将会看到 example.jpg 展示在浏览器中。

6. 代码详解

  • ResourceLoader: Spring 提供的资源加载器,它可以根据路径获取资源。
  • ResponseEntity: 用于构建 HTTP 响应对象,可以包括状态码、响应头和响应体。
  • @GetMapping: 映射 HTTP GET 请求到方法上。

7. 小结

通过以上步骤,我们成功地构建了一个简单的 Spring Boot 3 应用,它可以将指定路径的图片返回给前端。这里使用 ResourceLoader 来加载图片资源,并通过 ResponseEntity 来构建响应,这种方式简单而有效。同时,你可以针对不同的图片类型进行处理,比如 PNG、GIF 等,只需放置相应的图片到指定目录,并修改请求路径即可。通过这种方式,Spring Boot 的强大功能帮助我们快速实现了图片的展示功能。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部