Closed
Description
Is your feature request related to a problem? Please describe.
Today we don't have any native support for binding to IFormFiles as part of the incoming request. This is convenient for applications that want to do file uploads.
Describe the solution you'd like
app.MapGet("/upload", async (IFormFile file) =>
{
var uploads = Path.Combine(uploadsPath, file.FileName);
using var fileStream = File.OpenWrite(uploads);
using var uploadStream = file.OpenReadStream();
await uploadStream.CopyToAsync(fileStream);
});
Additional context
- Should we support IFormFileCollection?
- Would we do matching by name? (yes)
Without this, it will look like this:
app.MapGet("/upload", async (HttpRequest req) =>
{
if (!req.HasFormContentType)
{
return Results.BadRequest();
}
var form = await req.ReadFormAsync();
var file = form.Files["file"];
if (file is null)
{
return Results.BadRequest();
}
var uploads = Path.Combine(uploadsPath, file.FileName);
using var fileStream = File.OpenWrite(uploads);
using var uploadStream = file.OpenReadStream();
await uploadStream.CopyToAsync(fileStream);
return Results.NoContent();
});