Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java+;Spring Boot:下载映像并将其传递给请求_Java_Image_Servlets_Download_Spring Boot - Fatal编程技术网

Java+;Spring Boot:下载映像并将其传递给请求

Java+;Spring Boot:下载映像并将其传递给请求,java,image,servlets,download,spring-boot,Java,Image,Servlets,Download,Spring Boot,我有一个Spring引导应用程序,它应该像代理一样工作 它应该像“”那样处理请求 然后,应用程序应该生成一个到“”的新请求,在这里它应该下载它背后的图片(123456.jpg),然后将其传递给响应并提供服务 它应该像 @RequestMapping("/picture/{id}") public String getArticleImage(@PathVariable String id, HttpServletResponse response) { logger.info("Req

我有一个Spring引导应用程序,它应该像代理一样工作

它应该像“”那样处理请求

然后,应用程序应该生成一个到“”的新请求,在这里它应该下载它背后的图片(123456.jpg),然后将其传递给响应并提供服务

它应该像

@RequestMapping("/picture/{id}")
public String getArticleImage(@PathVariable String id, HttpServletResponse response) {

    logger.info("Requested picture >> " + id + " <<");

    // 1. download img from http://internal-picture-db/id.jpg ... 

    // 2. send img to response... ?!

    response.???

}
@RequestMapping(“/picture/{id}”)
公共字符串getArticleImage(@PathVariable字符串id,HttpServletResponse){

logger.info(“请求的图片>>”+id+“我将使用响应主体返回图像,而不是视图,例如:

@RequestMapping("/picture/{id}")
@ResponseBody
public HttpEntity<byte[]> getArticleImage(@PathVariable String id) {

    logger.info("Requested picture >> " + id + " <<");

    // 1. download img from http://internal-picture-db/id.jpg ... 
    byte[] image = ...

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.IMAGE_JPEG);
    headers.setContentLength(image.length);

    return new HttpEntity<byte[]>(image, headers);
}
@RequestMapping(“/picture/{id}”)
@应答器
公共HttpEntity getArticleImage(@PathVariable字符串id){
logger.info(“请求的图片>>”+id+“
@RequestMapping(“/picture/{id}”)
公共响应属性getArticleImage(@PathVariable字符串id){

logger.info(“请求的图片>>”+id+"很好的解决方案。对我来说很有用。ThanksWorks,但仔细看问题是该方法被调用了两次。这是因为HttpEntity。如果我将返回类型更改为String,并且只返回一个随机字符串并下载图像,那么它只被调用一次。因此,现在该方法中的代码被执行了两次。有什么想法或解决方法吗s?如果返回字符串并使用base64.encodeBase64URLSafeString(字节[]二进制数据)将图像编码到base64,会发生什么情况?然后它只显示字符串,因为没有指定内容类型。我不确定如何处理它,因为我将下载和提供的图像并不总是jpg,也可能是gif。我需要将内容类型设置为动态。我尝试了
@RequestMapping(value=“/picture2/{id}”,headers=“Accept=image/jpeg,image/jpg,image/png,image/gif”)public@ResponseBody byte[]getArticleImage2(@PathVariable String id){
可以工作,但也会执行两次…?!下载的代码似乎让它执行两次?!
@RequestMapping("/picture/{id}")
public ResponseEntity<byte[]> getArticleImage(@PathVariable String id) {

    logger.info("Requested picture >> " + id + " <<");

    // 1. download img from http://internal-picture-db/id.jpg ... 
    byte[] image = ...

    return new ResponseEntity<byte[]>(image, HttpStatus.OK);
}