Wątek przeniesiony 2023-09-26 00:52 z JavaScript przez Riddle.

Przekazanie pliku do zapisania

0

Hejka,

Mam taką kwestię. Robię mini eksporter danych do excela. Od strony API wszystko śmiga jak trzeba. W nagłówku odpowiedzi jest nazwa pliku, w body jest sama zawartość arkusza. Dochodzę to tego momentu:

t._pkgs.ExportExcel(q).subscribe( res => {
  const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
  
});

Mam w zmiennej co trzeba, ale nie mam zielonego pojęcia w jaki sposób sprawić, żeby ten plik się zapisał u użytkownika.

Mogę prosić o jakąś wskazówkę?

K

2

Możesz utworzyć url object link, przypisać go do <a> elementu i wywołać .click()

t._pkgs.ExportExcel(q).subscribe( res => {
  const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
  
   const link = document.createElement('a');
   link.href = URL.createObjectURL(blob);
   link.download = 'document.sheet';
   link.click();
});
0
junior_frontend napisał(a):

Możesz utworzyć url object link, przypisać go do <a> elementu i wywołać .click()

t._pkgs.ExportExcel(q).subscribe( res => {
  const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
  
   const link = document.createElement('a');
   link.href = URL.createObjectURL(blob);
   link.download = 'document.sheet';
   link.click();
});

Dzięki - a pytanie jeszcze - jak się dobrać do nazwy pliku:

Content-Disposition: attachment; filename=8-A10-22-2V040-00516_export.xlsx; filename*=UTF-8'’8-A10-22-2V040-00516_export.xlsx
Content-Type: application/octet-stream
Content-Length: 3276
Date: Mon, 25 Sep 2023 19:48:59 GMT
Server: Kestrel
0

A jak wygląda zawartość res?
Tam jakoś musisz wyciągnąc z tego nazwę pliku i podstawić pod link.download = 'filename.txt'
Podejrzyj sobie w debuggerze, jak wygląda struktura i wyciągnij z tego.

0

Produkowanie pliku "użytkowych" PDF, XLS javascriptem na kliencie to MZ dosc cienki pomysł.
Dla mnie to dziedzina typowo serverside, o niebo lepsze biblioteki, lepsze języki, dostęp do dziedziny i kilka innych powodów

0
ZrobieDobrze napisał(a):

Produkowanie pliku "użytkowych" PDF, XLS javascriptem na kliencie to MZ dosc cienki pomysł.
Dla mnie to dziedzina typowo serverside, o niebo lepsze biblioteki, lepsze języki, dostęp do dziedziny i kilka innych powodów

Pisałem, że samego excela robię po stronie API - biblioteką EPPlus nota bene. Miałem problem z "doręczeniem" pliku do użytkownika.

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