У меня есть бэкэнд-сервис для данных Spring, который возвращает объект json в качестве base64, я получил эти объекты в front-end -Angular4- и начал декодировать его, чтобы загрузить его в файл
мой бэкэнд-сервис
ObjectMapper objectMapper = new ObjectMapper();
// Set pretty printing of json
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
String json = objectMapper.writeValueAsString(entity);
byte[] data = json.getBytes();
returnedString = Base64.getEncoder().encodeToString(data);
String fileName = "filename=" + type.getTypeName() + ".json";
headers.add("Content-disposition", "attachment; " + fileName);
return ResponseEntity.ok().headers(headers).contentLength(returnedString.length()).contentType(MediaType.parseMediaType("application/json"))
.body(returnedString);
в Angular 4 я делаю это
InitDownLoad() {
this.ShowDownloadSpan = true;
let url = this._serviceUrls.exportJson + '/' + this.recId + '/' + 1;
this._serviceCall.downLoad(null, url, true).subscribe((res: any) => {
let uri = "data:application/json" + ";base64,";
downloadURI(uri + res._body, "types.json");
this.ShowDownloadSpan = false;
});
function
downloadURI(uri, name) {
var link = document.createElement("a");
link.download = name;
link.href = uri;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
долгое время это работало нормально, неожиданно, когда я пытаюсь загрузить веб-страницу, вылетел сбой и я получил
Этот сайт недоступен
Веб-страница в data: application / json; base64, [object ArrayBuffer] может быть временно недоступна или она может постоянно перемещаться на новый веб-адрес.
и в URL-адресе данные: application / json; base64, [объект ArrayBuffer]
Кто-нибудь может знать, почему это происходит и как я могу это решить