以下是一个使用
RestTemplate
获取图片并将其转发到前端的示例代码。在这个示例中,我们将获取的图片字节数据以
byte[]
的形式返回给控制器,然后在控制器中设置响应的Content-Type
等信息来将图片数据发送给前端。
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
public class ImageRetriever {
public byte[] getImage(String imageUrl) {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("User-Agent", "Your User Agent String");
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<byte[]> response = restTemplate.exchange(imageUrl, HttpMethod.GET, entity, byte[].class);
if (response.getStatusCode().is2xxSuccessful()) {
return response.getBody();
} else {
// 处理获取图片失败的情况
return null;
}
}
}
在控制器中:
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/image") public class ImageController { private final ImageRetriever imageRetriever; public ImageController(ImageRetriever imageRetriever) { this.imageRetriever = imageRetriever; } @GetMapping public ResponseEntity<byte[]> getImage() { String imageUrl = "https://www.baidu.com/image.jpg"; // 替换为实际的图片 URL byte[] imageBytes = imageRetriever.getImage(imageUrl); if (imageBytes!= null) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.IMAGE_JPEG); // 根据图片类型设置 return new ResponseEntity<>(imageBytes, headers, HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } } }
请注意,上述代码中需要将
imageUrl
替换为您实际要获取的图片的 URL,并根据图片的真实类型设置正确的ContentType
。