Как отобразить изображение, сохраненное в mongodb с помощью springboot в качестве ссылки

#spring #mongodb #spring-boot #microservices #spring-cloud-gateway

Вопрос:

как отобразить изображение, сохраненное в mongodb с помощью springboot и spring gateway, в качестве ссылки для использования во внешнем интерфейсе. Я могу удалить изображение, но мне нужно получить ссылку для использования изображения в приложении

Мой файл сохраняется вот так:

введите описание изображения здесь

Это мой метод для сохранения изображения:

 @PostMapping("/proyectos/photos/upload/{nombre}")  public void formUpload(@PathVariable("nombre") String nombre, @RequestParam("file") MultipartFile file) {  try {  if (file != null amp;amp; !file.isEmpty()) {  String fileMd5 = SecureUtil.md5(file.getInputStream());  pService.savePhoto(nombre, fileMd5, file);   } else {   }  } catch (IOException ex) {  ex.printStackTrace();  }  }  // In ProyectoService, the method @Override  public void savePhoto(String nombre, String fileMd5, MultipartFile file) {  ProyectosPhotos ph = new ProyectosPhotos();  ph.setNombre(nombre);  ph.setName(file.getOriginalFilename());  ph.setSize(file.getSize());  ph.setContentType(file.getContentType());  ph.setCreatedtime(new Date());  ph.setMd5(fileMd5);  String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));  ph.setSuffix(suffix);  phRepository.save(ph);  }  

Я попытался создать ссылку для изображения, как это:

 @GetMapping("/proyectos/photos/view/{nombre}")  public ResponseEntitylt;?gt; fileOnline(@PathVariable("nombre") String nombre) {  try {  ProyectosPhotos file = phRepository.findByNombre(nombre);  return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "fileName="   file.getName())  .header(HttpHeaders.CONTENT_TYPE, file.getContentType())  .header(HttpHeaders.CONTENT_LENGTH, file.getSize()   "").header("Connection", "close")  .body(file.getContent());  } catch (Exception e) {  return ResponseEntity.status(HttpStatus.NOT_FOUND).body("File was not found");  }  }  

Но я получил ошибку в шлюзе:

 2021-12-06 23:34:16.316 ERROR 16568 --- [ctor-http-nio-2] a.w.r.e.AbstractErrorWebExceptionHandler : [1c38fdea-8] 500 Server Error for HTTP GET "/api/proyectos/proyectos/photos/view/Pepe"  reactor.netty.http.client.PrematureCloseException: Connection prematurely closed DURING response  Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:  Error has been observed at the following site(s):  *__checkpoint ⇢ com.gateway.security.JwtAuthenticationFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]  *__checkpoint ⇢ com.gateway.security.JwtAuthenticationFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]  *__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]  *__checkpoint ⇢ HTTP GET "/api/proyectos/proyectos/photos/view/Pepe" [ExceptionHandlingWebHandler] Stack trace:  

Somebody have any idea how to generate a preview for image?