загрузка файла из тела ответа - PullRequest
0 голосов
/ 14 октября 2019

У меня есть служба, которая пишет в тело ответа GET-запроса. Записанные данные могут быть в файл PDF или в файл XLSX.

Мой вопрос: когда я делаю запрос с помощью браузера Google Chrome, файл загружается. Однако, когда я делаю тот же звонок с использованием почтальона, в теле ответа я получаю только несколько бессмысленных записей (я думаю, что в ответе заархивированы байты), и я не могу загрузить файл для загрузки.

Здесь я показываю своиПодход к загрузке файла после того, как я сделаю его запрос к контроллеру:

мой вызов Ajax:

 $.ajax({
                    url: request_url,
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify(searchCriteria),
                    success: function (response) {
                        swal("SWEET");
                    },
                    error: function (err) {
                        swal(JSON.stringify(err));
                    }
                });

в сервисе я устанавливаю содержание ответа и набираю следующим образом:

        response.setContentType(contentType);
        // Assign the byte stream's size
        response.setContentLength(baos.size());

        //Write to response stream
        Writer.write(response, baos);

Я делаю запрос от вызова Ajax и получаю тот же ответ, который получил от Почтальона, Есть ли способ загрузить эти байты, возвращающиеся в Ajax?

Спасибо.

1 Ответ

0 голосов
/ 15 октября 2019

Я выяснил проблему, когда я сделал запрос из Google Chrome, запрос был запрос GET, который направлен на другой контроллер. С другой стороны, тот, что сделан с помощью Postman, представляет собой запрос POST, направленный другому контроллеру.

Содержимое ответа GET-запросов можно загрузить в виде файла, если оно указано в заголовке ответа.

Содержание POST, однако, не. Я считаю, потому что POST не предназначены для запуска каких-либо загрузок, как указано в комментариях Archer.

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