Ангуляр 8. Ошибка при использовании метода сохранения файла
Есть методы в ангуляре:
downloadFile() {
this._bookService.download().subscribe();
}
download(): Observable<any> {
return this.httpClient.get(`http://localhost:8082/api/files/xYRPSxzRc3A.jpg`);
}
Метод в сервере (spring boot):
@GetMapping("/files/{filename:.+}")
@ResponseBody
public ResponseEntity<Resource> getFile(@PathVariable String filename) {
Resource file = storageService.load(filename);
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"").body(file);
}
Выдает 200 OK, но потом ошибка:
SyntaxError: Unexpected token < in JSON at position 0
ну и файл не скачивается.
Ответы (1 шт):
Автор решения: zalex
→ Ссылка
Ваш метод get предполагает получения JSON и ошибка вам говорит о том что при получении ответа происходит парсинг тела ответа из JSON в объект. Однако само собой у вас не приходит JSON в ответе.
Почитать про данную историю вы можете тут
https://stackoverflow.com/questions/50826531/httpclient-post-tries-to-parse-a-non-json-response
В вашем случае вам нужно корректно составить запрос для того чтобы ответ ожидался в правильном формате. По ссылке есть примеры как проставить корректные заголовки.