Hej, uczę się JSa i Reacta i robię frontend do backendu, który sam napisałem.
Mam endpoint, na którym pobiera mi się plik, ale nie wiem jak to obsłużyć w mojej aplikacji Reactowej.
Po zebraniu danych z forma strzelam axiosem na endpoint i myślałem, że to wystarczy, że headersy z backendu wymuszą na przeglądarce wyskoczenie okienka pobierania, ale nic takiego się nie dzieje.

  axios
    .post("/generate-timesheet", payload);

Na backendzie mam media-type = application/octet-stream
i header Content-Disposition: attachment; filename="timesheet.xls"

Szukając rozwiązania, znalazłem jakieś biblioteki wspomagające pobieranie plików - np. https://www.npmjs.com/package/js-file-download

  axios
    .post("/generate-timesheet", payload)
    .then(response => {
      FileDownload(response.data, "timesheet.xls");
    });

Dzięki temu udało mi się wywołać okienko pobierania, ale nazwę pliku muszę wrzucać ręcznie, a oprócz tego plik pobiera się zepsuty (to pewnie do sprawdzenia i naprawienia, ale nie szedłem dalej, bo wydaje mi się, że powinienem to zrobić bez użycia takiej biblioteki).

Jak powinienem rozwiązać taki problem?

Dodam, że w Postmanie po strzale na endpoint plik pobiera się poprawnie, a nawet jak dla testów przerobiłem metodę na GET a payload zamockowałem, to po wpisaniu adresu w przeglądarkę plik poprawnie się pobierał.