Загрузите zip-файл в формате AngularJs, полученный Java серверной частью - PullRequest
0 голосов
/ 08 мая 2020

У меня есть интерфейс AngularJs и сервер Java.

Процесс:

  • Фронтенд отправляет запрос "getZipFile" на сервер

  • Сервер генерирует zip-файл и помещает его в ответ

  • Frontend получает zip-файл и создает ссылку для загрузки

Моя проблема: загруженный zip-файл поврежден и не может быть открыт. Бэкэнд правильно генерирует zip-файл, но после передачи zip разрывается.

Код внешнего интерфейса:

var d = $q.defer();
$http({
   method: 'GET',
   cache: false,
   url: 'path/to/api',
}).success(function (data) {
   var textToSaveAsURL = window.URL.createObjectURL(new Blob([data], {
      type: "application/zip"
   }
));

var downloadLink = document.createElement("a");
downloadLink.download = "file.zip";
downloadLink.innerHTML = "Download File";
downloadLink.href = textToSaveAsURL;
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
downloadLink.click();
d.resolve(data);
}).error(function (e) {
   console.error(e);
});

return d.promise;

Код сервера:

    @GET
    @Path("path")
    @Produces(MediaType.TEXT_PLAIN)
    public Response getFile() throws IOException {

        File file = getZipFile();

        ResponseBuilder response = Response.ok(FileUtils.readFileToByteArray(file));
        response.header("Content-Disposition", "attachment; filename=\"file.zip\"");

        return response.build();

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