Hej,
Mam taki problem - mója apka integruje się z zewnętrzym systemem a konkretnie repozytorium danych które przechowuje pliki. I teraz sprawa wygląda tak, że strzelam do tego repo, i dostaje zwrotkę HttpResponse z którego za pomocą EntityUtils.toByteArrays(response.getEntity) przekształcam sobie ten obrazek/pdf itp. na tablicę bitów. I teraz zastanawiam się, czy lepiej jest zwracać coś takiego bezpośrednio na frontend przy użyciu springowego Resource czyli return new ByteArrayResource, czy wrzucać to do jakiegoś pliku temporary i taki o zwracać na FE. Z projektu dostałem info że powinniśmy wrzucać ten pobrany plik z repo do pliku temp i go zwracać na FE, co o tym myślicie? Jaka jest zaleta takiego rozwiązania nad bezpośrednim zwracaniem tablicy bitów?
0
1
- W ogóle ani tak ani tak bym nie robił. Przecież jak zrobisz z tego bytearray to ładujesz wszystko do pamięci o_O Możesz z tego zrobić po prostu
InputStreamResource
i zwracaćResponseEntity<Resource>
i zwracać to jako strumień danych, bez ładowania tego do pamięci w ogóle. - To zależy co chcesz osiągnąć, ale nie bardzo rozumiem czemu miałbyś coś kopiować do jakiegoś tempa. Nie rozumiem też co znaczy
taki o zwracać na FE
. Co w takiej sytuacji zwracasz do frontu?
0
@Shalom: Widziałbym to tak?
@GetMapping("/getSomeImage")
public ResponseEntity<Resource> download() throws IOException {
HttpResponse response = repoApi.getImageFromRepo(id);
InputStream inputStream = response.getEntity().getContent();
InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
return ResponseEntity.ok()
.contentType(MediaType.IMAGE_JPEG)
.body(inputStreamResource);
}