Ангуляр 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

В вашем случае вам нужно корректно составить запрос для того чтобы ответ ожидался в правильном формате. По ссылке есть примеры как проставить корректные заголовки.

→ Ссылка