Я получаю строку base64 pdf из веб-службы, затем конвертирую base64 в Byte[], затем возвращаю файл в контроллер, но файл не загружается
Я использую реакцию как передний вызов контроллера с помощью fetch API
fetch('/api/PDFDownload/PDFDownloadStat', {
method: 'POST',
headers: {
'content-type': 'application/json',
'X-CSRF-TOKEN': getCookies("CSRF-TOKEN")
},
body: JSON.stringify(data)
}).then(res => res.json())
}).catch(error =>
{
console.info(error)
});public class PDFDownloadController : Controller{
[HttpPost("[action]")]
public async Task<IActionResult> PDFDownloadStatController(PDFEntity pdfObj)
{
var response = string.Empty;
Byte[] Base64=null;
try
{
if (ModelState.IsValid)
{
Base64 = genPDF.GetPDFByte(); // getting Byte for pdf
}
}
catch (Exception ex)
{
}
return File(Base64, "application/pdf", "myFile.pdf");
}
}
Или обратитесь к ответу, опубликованному здесь stackoverflow.com/a/32545850/3061857, чтобы узнать, как вы используете response.blob() с downloadjs.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку вы загружаете файл, вам нужно будет добавить ответ blob в свой код.
fetch('/api/PDFDownload/PDFDownloadStat', {
method: 'POST',
headers: {
'content-type': 'application/json',
'X-CSRF-TOKEN': getCookies("CSRF-TOKEN")
},
body: JSON.stringify(data)
}).then(res => return response.blob())
}).catch(error =>
{
console.info(error)
});
В примере документов Mozilla:
var myHeaders = new Headers();
var myInit = { method: 'GET',
headers: myHeaders,
mode: 'cors',
cache: 'default' };
var myRequest = new Request('flowers.jpg', myInit);
fetch(myRequest).then(function(response) {
return response.blob();
}).then(function(myBlob) {
var objectURL = URL.createObjectURL(myBlob);
myImage.src = objectURL;
});
Вы можете прочитать полный код здесь
Прямо сейчас вы анализируете ответ на свой запрос как json, который (очевидно) не будет работать для файла. Посмотрите на
fetch'sresponse.blob(): developer.mozilla.org/en-US/docs/Web/API/Body/blob - возможно, в сочетании с библиотекой, такой какdownloadjs, чтобы преобразовать этот блоб в (загруженный) файл: npmjs.com/package/downloadjs