java http请求获取图片并返回文件流给前端

洛可可Blue 2024-09-17 13:03:01 阅读 93

需求 :在Spring Boot项目中实现获取外部HTTP地址的图片,并返回文件流给前端

一:依赖

<code><!--web 模块-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

二:配置类

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.client.RestTemplate;

@Configuration

public class RestTemplateConfig {

@Bean(name = "restTemplateJQSJ")

public RestTemplate restTemplate(){

return new RestTemplate();

}

}

三:服务实现类

import org.springframework.http.*;

import org.springframework.web.bind.annotation.*;

import org.springframework.web.client.*;

import javax.servlet.http.HttpServletResponse;

import java.io.*;

@RestController

@RequestMapping("/api")

public class ImageController {

@Autowired

@Qualifier("restTemplateJQSJ")

private RestTemplate restTemplate;

@GetMapping("/image")

public void getImage(HttpServletResponse response) throws IOException {

String imageUrl = "http://获取图片的地址";

// 设置HTTP头部信息

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.IMAGE_JPEG); // 假设图片类型为JPEG,根据实际情况调整

// 发送HTTP请求获取图片数据流

ResponseEntity<byte[]> imageResponse = restTemplate.exchange(imageUrl, HttpMethod.GET, new HttpEntity<>(headers), byte[].class);

// 将图片数据流写入响应输出流

if (imageResponse.getStatusCode() == HttpStatus.OK && imageResponse.getBody() != null) {

response.setContentType(MediaType.IMAGE_JPEG_VALUE); // 设置响应内容类型

response.getOutputStream().write(imageResponse.getBody()); // 将图片数据写入响应输出流

} else {

response.setStatus(HttpStatus.NOT_FOUND.value()); // 处理请求失败的情况

}

}

}

可以用Postman测试一下效果:



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。