Я понимаю, что есть много подобных вопросов, но ни один из ответов не помог мне.Мне нужно отправить данные в маршрут веб-API, который отображает шаблон, преобразует его в PDF и возвращает файл для загрузки, не сохраняя его на сервере.Этот метод работает при чтении ранее сохраненного файла и выполнении GET, но когда я пытаюсь сохранить поток в памяти из POST, я просто получаю то, что представляется пустым объектом ReadableStream.
Маршрут API:
[AllowAnonymous]
[HttpPost]
public HttpResponseMessage Stream([FromBody]Resume res)
{
var resumeHtml = ResumeTemplate(res);
var Renderer = new HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(resumeHtml);
var stream = PDF.Stream;
var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StreamContent(stream)
};
result.Content.Headers.ContentDisposition =
new ContentDispositionHeaderValue("attachment")
{
FileName = "WORK.pdf"
};
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
return result;
}
Я знаю, что поток создается и правильно читается, так как файл правильно сохраняется на сервере.Я также попытался вернуть массив байтов.
Мой запрос на выборку:
fetch("/DesktopModules/Resume/API/Resume/Save", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data)
})
.then(response => {
console.log(response);
response.blob();
})
.then(blob => {
var downloadURL = window.URL.createObjectURL(blob);
window.open(downloadURL);
})
.catch(error => console.log(error));