Andrija
Andrija

Reputation: 14473

Download file through WebApi returns JSON

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

Answers (1)

Roman Marusyk
Roman Marusyk

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

Related Questions