В моем веб-приложении (.net Core 2.2) я хочу добавить функциональность загрузки файла PDF.
Когда пользователь нажимает «скачать» - POST отправляется в WebAPI, а сервер запрашивает другой сервердля файла PDF по жестко закодированному URL (невидимому для пользователя), и файл передается пользователю.
Я пытался использовать IHttpClientFactory
Запуск:
services.AddHttpClient("demo", c =>
{
c.BaseAddress = new Uri("http://www.africau.edu/");
c.DefaultRequestHeaders.Add("Accept", "application/pdf");
});
Метод для возврата файла PDF:
public async Task<FileStreamResult> GetPdfFile()
{
var client = _httpClientFactory.CreateClient("demo");
var uri = new UriBuilder(client.BaseAddress + "images/default/sample.pdf").Uri;
var stream = await client.GetStreamAsync(uri);
return new FileStreamResult(stream, new MediaTypeHeaderValue("application/pdf"));
}
К сожалению, он возвращает файл download.json
с: {"fileStream": {"needsDrain": true, "canRead": true, "canWrite": false, "canSeek": false
@ EDIT
Кажется, это потому, что в контроллере вместо * было Task<IActionResult>
1025 * а что если я предпочитаю возвращать ActionResult?
public async Task<IActionResult> GetPdf()
{
var result = await _service.GetPdfFile();
return Ok(result);
}