Pobierz Word .docx w postaci dużego obiektu binarnego z Angular na urządzenia mobilne

0

Pytanie

Próbuję załadować plik .docx z REST API (.NET Core FileContentResult) w załączniku Angular. Na KOMPUTERZE wszystko działa ok, ale jest problem z pobieraniem plików .docx na jednym przeglądarce internetowej VMware Workspace (nie próbowałem standardowe przeglądarki, takie jak Chrome lub Safari, wygląda na to, że jest tylko Android WebView). Jest to aplikacja firmy, a ta przeglądarka jest jedynym autoryzowanym.

Problem jest tylko z plikami .docx. Takie pliki w formacie PDF,. doc i .xlsx (utworzone ClosedXML), działają normalnie.

Wyzwanie REST API (również próbowałem użyć "arraybuffer" zamiast "blob" i stworzył obiekt Blob w kliencie, ale problem nadal występuje)

this.httpClient.get(requestUrl, {
  responseType: 'blob',
  observe: 'response'
});

Następnie utrzymuję ciało odpowiedzi za pomocą сохранителя plików.

generateDocument(file: string | Blob, name: string): void {
  FileSaver.saveAs(file, name);
}
  • Próbowałem również podejście, które tworzy link i kliknie na niego to nie działa).
  • Rozwiązanie z użyciem window.open(blobUrl) nie działa.

ZMIANY:

  • Dostałem informacje o tym, że on w ogóle nie działa na iOS z tej samej przeglądarki. Użytkownicy otrzymują komunikat o błędzie "Odnośnik nieprawidłowy".

Czy może ktoś mi pomóc z tym problemem? Dziękuję.

android angular blob docx
2021-11-23 17:22:43
1

Najlepsza odpowiedź

0

Jeśli można pobrać, pobierz ArrayBufferto może być użyte do rozpoczęcia pobierania z tymi bajtami:

Sprawdź tutaj: https://batman.dev/static/70085191/

async function downloadUrl(url) {
  downloadBuffer(
    await (await fetch(url)).arrayBuffer()
  )
}

function downloadBuffer(arrayBuffer) {
  const a = document.createElement('a')
  a.href = URL.createObjectURL(new Blob(
    [ arrayBuffer ],
    { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }
  ))
  a.download = 'my-file.docx'
  a.click()
}

2021-11-26 19:43:03

Próbowałem to i to nie działa. Telefon nie był w stanie otworzyć dokument.
Viktor 36

Spróbuj roboczy test, który dodałem. On naładowany i otwarty na moim telefonie z systemem Android Chrome.
AnthumChris

On działa w Chrome, ale nie w VMware Workspace ONE Web. Zrobiłem testową stronę z różnymi rozwiązaniami i przetestował ją w Chrome na Androida i Safari na iOS. W tych przeglądarkach wszystko działa normalnie.
Viktor 36

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................