Получение отчёта через Rest Api

Добрый день.

Пишу http запрос для получения файла отчёта. В ответе приходят данные с некорректной кодировкой, не распознаётся кириллица. Подскажите, как это можно исправить?

В приложении файл с ответом.

Листинг запроса:

this.$http.get("/Reports/ParametersSheet",
{
headers: {
‘Accept’: ‘application/json’,
},
params: {
reportId: reportId,
startDate: startDate,
endDate: endDate,
dataType: dataType,
entityId: entityId,
reportEntity: reportEntity,
format: format
},
}
).then(response =>
{
console.log(response);
}
)
error_coding.JPG

Вам нужно декодировать имя файла с помощью метода decodeURIComponent().
Мы у себя используем следующий код на TypeScript для декодирования имени файла:

decodeURIComponent(response.headers.get('x-filename'));

Заметьте что ответ от сервера приходит в виде потока байт, а если точнее arrayBuffer. Для сохранения файла можно использовать объекты File или Blob и сторонние библиотеки, например file-saver.
Мы в typescript используем следующий код:

var blob = new Blob([response.body, { type: 'application/pdf; charset=utf-8' }]);
saveAs(blob, fileName);

Использовала ваш пример в своём коде:

              
var fileName = decodeURIComponent(response.headers["x-filename"]);

var FileSaver = require('file-saver');
var blob = new Blob([response.data, {type: "application/pdf; charset=utf-8"}]);
FileSaver.saveAs(blob, fileName);

Но, к сожалению, сохраняется пустой PDF, хотя в консоли получается вывести данные ответа без декодирования.
Подскажите, нужно ли указывать дополнительные заголовки в запросе или в чём может быть ошибка?

Разобралась, надо указывать в запросе responseType:

responseType: 'arraybuffer',

Может кому-нибудь пригодится, в документации этого пока нет.