Search code examples
c#.net-6.0asp.net-core-6.0c#-10.0minimal-apis

ASP.NET Minimal API How to Return/Download Files from URL


I'm working on minimal api, what I'm trying is when the user visits /download it immediately downloads my picture named add.png.

But no matter what I try it doesn't work because I either get an empty page with only {}

Is this possible? if so how

This is my code that I've tried so far. (I got access denied with all permissions on the location!)

app.MapGet("/download", async () =>
  {
      var path = "add.png";
      using (var stream = new FileStream(path, FileMode.Open))
      {
          stream.CopyToAsync(stream);
      }
      var ext = Path.GetExtension(path).ToLowerInvariant();
      var result = (ext, Path.GetFileName(path));
      return result;
  });

How do I do this for when the user does /download within my api that he is going to download a file?

Thanks in advance


Solution

  • You can use Results.File to return file to download from your Minimal APIs handler:

    app.MapGet("/download", () =>
    {
        var mimeType = "image/png";
        var path = @"path_to_png.png";
        return Results.File(path, contentType: mimeType);
    });