Как я могу заставить браузер (т.е. 7) загрузить файл из запроса? - PullRequest
0 голосов
/ 11 марта 2020

Я сталкиваюсь с проблемой, что ie7 не поддерживает тип данных BLOB-объектов.
И теперь я не могу заставить браузер (ie7) загрузить файл, который я передаю с сервера с запросом get.
Современные браузеры (chrome, firefox) хорошо с этим js кодом

        var xhr = new XMLHttpRequest();
        xhr.open('GET', COEFF_CONTROL_GET_CSV_FILE_URL + "&" + "DWL_PERIOD=2019&DWL_MR=37", true);
        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4 && xhr.status == 200){
               //Code below implements file load
                var contentDisposition = xhr.getResponseHeader('content-disposition');
                var filename = contentDisposition.split("filename=")[1].split(";")[0];

                var blob = new Blob([xhr.response], {type: 'text/csv'});
                var link = document.createElement('a');
                link.href = window.URL.createObjectURL(blob);
                link.download = filename;

                document.body.appendChild(link);
                link.click();                    
            }
        }

Заголовки, которые я передаю с моего запроса от сервера на данный момент

header("Content-Type", "text/csv;charset=utf-8");
header("Content-Disposition", "attachment;filename=&mvFileName");

Я уже пробовал (но это не помогло)

Будем благодарны за всевозможную помощь!

1 Ответ

0 голосов
/ 12 марта 2020

Вы используете браузер IE 7, который слишком стар и выходит за рамки поддержки Microsoft.

Поскольку Blob не поддерживается в IE 7, ваш код будет не будет работать для IE 7 версии.

Я предлагаю вам использовать самые последние браузеры Microsoft. Если вы не можете использовать последние версии браузеров Microsoft, по крайней мере, перейдите на версию IE 11. Blob поддерживается в версии IE 10.

Для браузера IE 11 я предлагаю вам выполнить тест с использованием метода Navigator.msSaveBlob () .

Метод Navigator.msSaveBlob () сохраняет файл или блоб на диск. Этот метод ведет себя так же, как Navigator.msSaveOrOpenBlob (), за исключением того, что он отключает параметр открытия файла.

Пример:

var blob = new Blob(["Sample String\r\n,For Checking, msSaveBlob"],{
    type:'text/csv;charset=utf-8;'
});

if(navigator.msSaveBlob){
    navigator.msSaveBlob(blob,"sample.csv");
}

Ссылки:

  1. msSaveBlob

  2. Метод msSaveBlob

...