Выполните следующие шаги для решения проблемы.
Шаг 1. Преобразуйте ваш байтовый массив в строку base64 в вашем API, как показано ниже
[HttpGet("Downloadpdf/{SessionKey}")]
public IActionResult Downloadpdf(string SessionKey)
{
Byte[] pdf = null;
try
{
pdf = PDFService.Downloadpdf(SessionKey);//Here you need to modify and get byte array like byte[]
string pdfBase64 = Convert.ToBase64String(pdf);
return Ok(pdfBase64);
}
catch (Exception ex)
{
throw ex;
}
}
, шаг 2. Добавьте функцию ниже дляпреобразование из строки base64 в ArrayBuffer в файле .ts
base64ToArrayBuffer(base64:any):ArrayBuffer {
var binary_string = window.atob(base64);
var len = binary_string.length;
var bytes = new Uint8Array( len );
for (var i = 0; i < len; i++) {
bytes[i] = binary_string.charCodeAt(i);
}
return bytes.buffer;
}
шаг 3. Вызовите функцию step2 в пользовательской функции для события нажатия кнопки
let sessionKey: any ="sessiontoken";
this.pdfService.downloadpdf(sessionKey).subscribe((data: any) => {
var byteArray = this.base64ToArrayBuffer(data);
let blob: any = new Blob([byteArray], { type: 'application/octet-stream' });
saveAs(blob, 'Report.pdf',true);
},
(error: HttpErrorResponse) => {
console.log(error)
});