ASP.NET Core 知识速递 – Day 6:每天进步一点

这节我们讲解如何使用APS.NET Core 文件处理,文件处理是我们开发系统中经常会用到的,在ASP.NET Core中如何接受客户端上传到服务器的文件呢?我们通过一个Demo例子来做演示,新建一个空的ASP.NET Core 模板,添加如下代码:
var app = WebApplication.Create();
app.MapGet(“”, async context =>
{
context.Response.Headers.Append(“content-type”, “text/html;charset=utf-8”);
var body = $@”

上传文件

选择文件 上传
“;
await context.Response.WriteAsync(body);
});

app.MapPost(“Upload”, async context =>
{
if (context.Request.HasFormContentType)
{
var form = await context.Request.ReadFormAsync();

    foreach (var f in form.Files)
    {
        using (var body = f.OpenReadStream())
        {
            var fileName = Path.Combine(app.Environment.ContentRootPath, f.FileName);
            File.WriteAllBytes(fileName, ReadFully(body));
            await context.Response.WriteAsync($"上传文件被写入到 {fileName}");
        }
    }
}
await context.Response.WriteAsync("");

});

app.Run();

static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16 * 1024];
using var ms = new MemoryStream();
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
在上面代码中,我们首先从服务器端输出一个HTML的页面,我们基于这个页面上传文件并在服务器端接收文件,我们在服务器中从Request中读取我们的文件,并获取到上传的文件,后续可以根据自己的业务系统来处理。

效果如下:

注意在上传文件时,我们客户端提交表单要以Form的方式去提交(也叫做 multipart/form-data)。

在接收文件时,除了上面方法我们还可以使用模型绑定的方式接收文件,接收多个文件时使用IFormFileCollection类型,接收单个文件时使用IFormFile类型。

源代码地址:

https://github.com/bingbing-gui/AspNetCore-Skill/tree/master/src/aspnetcore-knowledge-point/form-upload-file

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/422752.html

联系我们
联系我们
分享本页
返回顶部