я кнопка определяется как:angular2 загрузка файла с запросом после
<button pButton type="button" label="Download" data-icon="fa-cloud-download" (click)="download()"></button>
где download
метод делегаты на службу, и вызов службы API-интерфейс с помощью метода поста:
download(model:GlobalModel) {
let downloadURL = base + "rest/process/download";
let body = JSON.stringify(model);
let headers = new Headers({'Content-Type': 'application/json'});
let options = new RequestOptions({headers: headers});
this.http.post('http://localhost:48080/rest/process/download', body, options)
.toPromise()
.then(
response => {
console.log(response);
var mediaType = 'application/zip';
var blob = new Blob([response.blob()], {type: mediaType});
var filename = 'project.zip';
saveAs(blob, filename);//FileSaver.js libray
});
}
Но теперь метод blob()
не был реализован, и есть другие ответы с использованием _body
, но есть ошибка типа машинописного текста, такая как «_body is private».
Браузер отображает окно загрузки, но когда я загружаю файл, он поврежден и не может его открыть (я проверю с помощью postman
и файл сгенерирован с сервера).
Как я могу загрузить файл должным образом? ... если это невозможно, существует обходное решение?
Что произойдет, если вы сделаете это: 'Новый Blob ([response.text()], {Тип: MEDIATYPE})'? 'text()' должен возвращать сырое тело ответа, я считаю .. – Sasxa
'.text()' создает поврежденный файл – Sergio