Sposób na zwrócenie pliku

Sposób na zwrócenie pliku
JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
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?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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?
JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
0

@Shalom: Widziałbym to tak?

Kopiuj

@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);
    }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.