Sposób na zwrócenie pliku

0

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?

1
  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.
  2. 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);
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1