Не удается загрузить PDF в браузере Safari на iphone или ipad pro ios12 - PullRequest
0 голосов
/ 03 октября 2018

У меня есть функция загрузки PDF в моем веб-приложении.Он работает нормально со всеми браузерами и iOS11, но не работает в браузере Safari и ios12 на мобильных устройствах или iod pro.Я получаю ниже ошибку - WebKitBlobResource ошибка 1

export const downloadPDF = (downloadLink, fileName, trackId, productId, historyId) => {
  return (dispatch) => {
    return request.doGetAuth(downloadLink).then(response => {
      let contentType = response.headers.get('content-type');
      if (_.includes(contentType, 'application/json')) {
        return response.json();
      } else {
        return response.blob();
      }
    }).then(blobby => {
      if (!blobby.message) {
        const blob = new Blob([blobby], {
          type: 'application/pdf'
        });
        if (isIos()) {
          if (!isCriOs()) {
            // For ios 
            let url = window.URL.createObjectURL(blob);
            dispatch(downloadReadyAction(url, fileName));
          } else {
            // if chrome
            let reader = new FileReader();
            reader.onload = function(e) {
              dispatch(downloadReadyAction(reader.result, fileName));
            }
            reader.readAsDataURL(blob);
          }
        } else {
          FileSaver.saveAs(blob, fileName);
        }
      }
    }).catch(err => {
      console.log('Problem downloading pdf from server ' + err)
    })
  }
}

1 Ответ

0 голосов
/ 03 октября 2018

Когда мы открываем pdf в новой вкладке url, файл не существует, но его единственный кеш хранится в браузере.Поэтому, когда мы генерируем большой двоичный объект и перенаправляем на текущую вкладку, чтобы указать на созданный URL-адрес большого двоичного объекта, мы теряем кэш.Так что открытие URL в новом окне помогает.let url = window.URL.createObjectURL (blob);window.open (Url, "_blank");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...