Angular не может загрузить файл> 10 МБ с сервера в Google Chrome - PullRequest
1 голос
/ 11 марта 2019

Я использую сервис в своем приложении Angular 6 для загрузки файла (блоба) из моего REST API.Этот сервис отлично работает с файлами <10 МБ (в Chrome и других браузерах).В настоящее время я пытаюсь загрузить файл размером 14 МБ, и это не удается, только в Chrome (работает как задумано с Firefox) </p>

Я думаю, что это ограничение Chrome, но я не могу найти информацию об этом в SO илиAngular docs.

Вот мой сервис

displayFile(url: string) {
    const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
    this.http.post('my_backend_path/getFile', JSON.stringify({urlData: url}), {responseType: "blob", headers})
      .subscribe((data: any) => {
          var urlBlob = window.URL.createObjectURL(data);
          window.open(urlBlob);
        },
        (error) => {
          //Here comes the error
        });
  }

My Node REST API возвращает файл должным образом со статусом 200.Ошибка возникает в консоли Chrome, например:

POST my_backend_path/getFile net::ERR_FAILED 200 (OK)

В сетевом отладчике Chrome я могу прочитать, что размер файла оценивается примерно в 10,0 МБ (тогда как файл на самом деле занимает 14 МБ).Вот почему я думаю, что это связано с некоторыми ограничениями Chrome или Angular HTTPClient.

У кого-нибудь есть идея?

1 Ответ

0 голосов
/ 19 июля 2019

Я думаю, вам нужно изменить responseType: на ArrayBuffer.У меня работает

{responseType: "arrayBuffer", headers})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...