Reputation: 14473
I'm using Visual Studio 2019, WebApi project, .NET Core 3.1
My endpoint looks like this:
[HttpGet("GetFile")]
public async Task<HttpResponseMessage> GetFile([FromQuery] string filePath)
{
var bytes = await System.IO.File.ReadAllBytesAsync(filePath).ConfigureAwait(false);
using var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(bytes),
};
result.Content.Headers.ContentDisposition =
new ContentDispositionHeaderValue("attachment")
{
FileName = Path.GetFileName(filePath),
};
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
return result;
}
When I got to URL, it returns serialized HttpResponseMessage in JSON.
How can I download file from endpoint?
Upvotes: 1
Views: 1018
Reputation: 24569
To simplify, you can just use something like:
public async Task<IActionResult> GetFile([FromQuery] string filePath)
{
var bytes = await System.IO.File.ReadAllBytesAsync(filePath).ConfigureAwait(false);
return File(bytes, "application/octet-stream", Path.GetFileName(filePath));
}
Upvotes: 1