NET Core WebAPI 基础 文件上传


(资料图片)

有新人小伙伴就问了,那文件上传呢,这个怎么弄,借此我写了一个小demo,分享给大家。

通常来说,上传文件,我们是使用POST,还是老规矩先上代码:

这是需要上传的txt文件。

[HttpPost("UploaFile")]public async Task>UploadFileAsync(IEnumerablefiles){    var fileStream = ()?.OpenReadStream();    var fileContent = new StringBuilder();    if (fileStream != null)    {        using var reader = new StreamReader(fileStream!);        while (() >= 0)        {            (await ());        }    }    var result = new Dictionary()    {        ["fileContent"] = ()    };    return result;}

这里有一个需要注意的地方,就是上传文件的参数名,需要跟接口的入参名一致,也就是 files,我们使用的类型为 IEnumerable,主要是 IFormFile 这个,因为我们上传的文件可能不止一个,所以这里使用了集合,要是不喜欢 IEnumerable,换成 List 也是可以的;

而在实际开发中,我们可能会碰到前端不配合,或者参数名改来改去,我们后端又不想频繁更改,那怎么办呢,此时我们可以使用以下的方法,不过我个人不太建议,还是好好沟通的好,不然别人看到你的接口文档,例如swagger,都不知道你这个接口是上传文件的。

[HttpPost("UploaFile2")]public async Task>UploadFile2Async(){                var fileStream = ()?.OpenReadStream();    var fileContent = new StringBuilder();    if (fileStream != null)    {        using var reader = new StreamReader(fileStream!);        while (() >= 0)        {            (await ());        }    }    var result = new Dictionary()    {        ["fileContent"] = ()    };    return result;}

可以看到,结果是一样的。

而同样是一个POST请求,自然是可以通过url,route,from这些传参啦!

[HttpPost("{method}/{value}/UploaFile")]public async Task>UploadFileAsync(    [FromRoute] Parameter route,    [FromQuery] Parameter query,    [FromForm] Parameter form,    IEnumerablefiles){    var fileStream = ()?.OpenReadStream();    var fileContent = new StringBuilder();    if (fileStream != null)    {        using var reader = new StreamReader(fileStream!);        while (() >= 0)        {            (await ());        }    }    var result = new Dictionary()    {        ["route"] = route,        ["query"] = query,        ["form"] = form,        ["fileContent"] = ()    };    return result;}

关于文件上传,在微软的官网中也有对应的文档,感兴趣的小伙伴可以去看看,传送门,感谢各位的阅读,有任何问题欢迎评论区留言!

关键词:

推荐DIY文章
主机存在磨损或划痕风险 PICO4便携包宣布召回
穿越湖海!特斯拉Cybertruck电动皮卡可以当“船”用
vivoXFold+折叠旗舰开售 配备蔡司全焦段旗舰四摄
飞凡R7正式上市 全系标配换电架构
中兴Axon30S开售 拥有黑色蓝色两款配色
荣耀MagicBookV14 2022正式开售 搭载TOF传感器
it