У меня есть интерфейс 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();
}