ASP.Net Core创建MVC项目上传文件(缓冲方式)

本文介绍了如何在ASP.NET MVC项目中通过缓冲方式实现文件上传,包括单个文件和多个文件的上传。通过创建HomeController的两个Action方法,分别处理单个和多个文件的上传请求,并将文件保存到物理文件夹。示例代码详细展示了如何使用IFormFile接口处理上传的文件,并提供了相关的表单HTML代码。
摘要由CSDN通过智能技术生成

  学习了普通webapp中上传文件,再看看从MVC项目中通过缓冲方式上传文件到物理文件夹。这两者的区别主要是webapp通过模型绑定的方式传递IFormFile对象,而mvc通过控制器和action传递IFormFile对象,后续对IFromFile对象的处理其实差不多。
  运行下列命令创建mvc项目。

dotnet new mvc -o UploadFileByMVC
code -r UploadFileByMVC

  直接在默认的HomeController类中增加下列两个函数用于上传多个文件和单个文件,代码参照参考文献1-2.

[HttpPost]
public async Task<IActionResult> UploadMultiFile(List<IFormFile> files)
{
    long size = files.Sum(f => f.Length);

    foreach (var formFile in files)
    {
        var filePath = Path.Combine(_targetFilePath, formFile.FileName);

        if (formFile.Length > 0)
        {
            using (var stream = new FileStream(filePath, FileMode.Create))
            {
                await formFile.CopyToAsync(stream);
            }
        }
    }

    return Ok(new { count = files.Count, size });
}

[HttpPost]
public async Task<IActionResult> UploadSingleFile(IFormFile file)
{
    var filePath = Path.Combine(_targetFilePath, file.FileName);

    if (file.Length > 0)
    {
        using (var stream = new FileStream(filePath, FileMode.Create))
        {
            await file.CopyToAsync(stream);
        }
    }

    return Ok(new { count = 1 ,file.Length });
}

  页面就是将之前上传单个文件和多个文件的表单混在了一起,代码和截图如下:

<p>多文件上传:</p>

<form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="UploadMultiFile">
    <div>
        <input type="file" name="files" multiple />
    </div>
    <div>
         <input type="submit" value="Upload" />
    </div>
</form>

<p>单文件上传:</p>
<form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="UploadSingleFile">
    <div>
        <input type="file" name="file" />
    </div>
    <div>
         <input type="submit" value="Upload" />
    </div>
</form>

在这里插入图片描述
  程序比较简单,可以正常运行,微软示例中还包括列出缓冲文件夹的文件清单的功能,后面准备把这块代码剥处来放在本文的项目中。

参考文献:
[1]https://blog.csdn.net/tie123000/article/details/96868206
[2]https://blog.csdn.net/weixin_41960204/article/details/107575845?spm=1001.2101.3001.6650.14&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-14-107575845-blog-96868206.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-14-107575845-blog-96868206.pc_relevant_paycolumn_v3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值