здесь у меня есть функция, которая реагирует на нажатие кнопки и получает файл из моего бэкэнда.
onDownload() {
this.http.get('http://localhost:8080/backend/invoice/1/download',
{responseType: 'blob'})
.subscribe(res =>
console.log(res))
}
Пока что я счастлив, потому что внутри консоли Chrome я не получаю никаких ошибок.Ответ в консоли выглядит следующим образом:
Тип возврата бэкэнда Java был InputStream (аннотация метода @Produces (MediaType.MULTIPART_FORM_DATA))
Затем я нашел https://stackblitz.com/edit/angular-blob-file-download?file=app%2Fapp.component.ts
и посмотрел на ngOnInit () в app.component.ts
ngOnInit() {
const data = 'some text';
const blob = new Blob([data], { type: 'application/octet-stream' });
this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(window.URL.createObjectURL(blob));
}
В настоящее время я думаю, что мой интерфейс получает BLOB-объект.Итак, я могу начать со строки, начинающейся с «this.fileUrl =», и ввести свой блоб.
Внутри .html у меня есть кнопка для запуска функции onDownload () и другой тег для сохранения файла.на моем локальном жестком диске.
<div>
<button (click)="onDownload()">Herunterladen</button>
</div>
<a [href]="safeResourceUrl" download="file.txt">DownloadFile</a>
Тем временем я изменяю метод onDownload () на
onDownload() {
this.http.get('http://localhost:8080/backend/invoice/1/download',
{responseType: 'blob'})
.subscribe(res => this.safeResourceUrl=this.sanitizer.bypassSecurityTrustResourceUrl(window.URL.createObjectURL(res)))
}
После того, как я нажму "Herunterladen" и затем ссылку DownloadFile, я получу либо a.TXT-файл, который я не могу прочитать
или, если я изменяю имя файла на .pdf в теге внутри .html, я получаю сообщение «не удалось загрузить документ PDF»"
Все, что я хочу, - это получить мой оригинальный pdf, который я сохранил в своей базе данных и который был отправлен из бэкэнда.
У кого-нибудь раньше была такая же проблема?Спасибо за вашу помощь.