Проблемы с загрузкой BLOB-объекта (PDF) через AJAX в iOS12.2 - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть код, чтобы превратить пакет данных Base64 в файл PDF, а затем загрузить его как часть запроса AJAX.

Версии Chrome и IE прекрасно работают, и это было хорошо на предыдущих версиях iOS. Однако на iOS 12.2 я получаю следующую ошибку при попытке загрузить результат: 'xmlhttprequest не может загрузиться из-за проверок контроля доступа'

Я прочитал несколько статей об этом в Интернете, и у меня есть плохое решение, в соответствии с которым я открываю новую вкладку, инициирую запрос AJAX и затем загружаю результаты в новую вкладку ... но я не делаю очень нравится!

Я что-то упустил? Это известная ошибка?

Я бы согласился на пару вещей:

  1. Идеально, чтобы открыть файл PDF в окне браузера, как и раньше.
  2. Я бы согласился открыть файл PDF в новом окне в соответствии с моим текущим решением, но iOS, похоже, блокирует открытие нового окна во время вызова AJAX .always. Это оставляет мне необходимость открывать его перед запросом и надеяться, что я вернусь!

        if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
            var redirectWindow = window.open('', '_blank');
        }
        APICall.always(function (response) {
            if (!utils.checkTimedOut(response.status)) {
                model.pdfData = response && response.data || [];
                if (model.pdfData) {
                    var arrBuffer = base64ToArrayBuffer(model.pdfData);
    
                    var newBlob = new Blob([arrBuffer], { type: "application/pdf" });
    
                    // Mobile IOS
                    if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
                        var reader = new FileReader();
                        reader.fileName = model.customerDocument.valuationDate + ".pdf";
                        reader.onload = function (e) {
                            redirectWindow.location = reader.result;
                        };
                        reader.readAsDataURL(newBlob);
                        return;
                    }
    
                    // IE....
    
                    // For other browsers.... 
    
                }
            }
        });
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...