Ответ (xls файл) POST Rest поврежден с помощью метода saveAs файла fileSaver.js (Javascript) - PullRequest
0 голосов
/ 06 июня 2018

Ниже подробно описывается служба отдыха JAVA, которая загружает файл с сервера: Прототип метода:

@POST
@Path("/prop/export")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@Consumes(MediaType.APPLICATION_JSON)
public Response exportItemsToFile(Map<String, String> params);

Ответ построен из байтового массива в своей реализации:

Response.ok(someByteArray)

Я использую FileSaver.saveAs, чтобы загрузить ответ в файле xls, используя приведенный ниже код

var requestUri = '/wtk/rc/v1/pfm/prop/export';
                var payload={"context":addCtx,"language":addLang,"country":addCountry,"swimlane":addSL};
                $http.post(requestUri, payload, {
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    responseType: 'arraybuffer',
                }).success(function (data) {
                    var blob = new Blob([data],{type : 'application/vnd.ms-excel'});
                    var fileName = addLang+"_"+addCountry+".xls";
                    filesaver.saveAs(blob,fileName);
                }).error(function () {
                    //download failed
                });

Ответ, который является файлом xls, поврежден с использованием вышеуказанного кода.**

Это потому, что обещание, возвращаемое $ http.post, имеет пустой ответ в случае, если клиент rest создает поток октетов

**

Но если я использую какой-нибудь остальной клиент, такой как Почтальон, выберу опцию «Отправить и скачать» и сохраню ответ как xls.Все идет хорошо.

Любая помощь в этом будет оценена.

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